2011-05-03 28 views
6

我调查了通过使用C#的SMO创建数据库备份的可能性。 这个任务非常简单,代码简单明了。我只有一个问题:如何检查备份是否真的创建?SQL Server使用C#执行备份#

SqlBackup.SqlBackup方法返回没有参数,我甚至不知道它是否抛出任何异常。 (我知道的唯一的事情是它阻塞,因为还有SqlBackupAsync方法)

我将不胜感激任何帮助。

+0

我从来没有使用它自己,但最好从略读文档你可以附加一个事件处理程序[完整](http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management .smo.backuprestorebase.complete.aspx)来查看它是否返回错误代码。但我不能100%确定会在非异步情况下调用,并且必须有更好的方法! – Rup 2011-05-03 15:13:54

回答

1

你可以和它很可能给你问什么,

但做备份它自身使用SMO它不是很辛苦,但最困难的部分是管理备份和恢复。

这将很难把所有的代码放在这里,但它不适合。所以我会尽我所能把你需要的线条。

SqlBackup.SqlBackup不返回任何值,它是一个void函数。 但它需要一个参数,它是“服务器”,请尝试以下代码:

Server srvSql; 

//Connect to Server using your authentication method and load the databases in srvSql 
// THEN 

Backup bkpDatabase = new Backup(); 
bkpDatabase.Action = BackupActionType.Database; 
bkpDatabase.Incremental = true; // will take an incemental backup 
bkpDatabase.Incremental = false; // will take a Full backup 
bkpDatabase.Database = "your DB name"; 
BackupDeviceItem bDevice = new BackupDeviceItem("Backup.bak", DeviceType.File); 
bkpDatabase.Devices.Add(bDevice); 

bkpDatabase.PercentCompleteNotification = 1;// this for progress 
bkpDatabase.SqlBackup(srvSql); 
bkpDatabase.Devices.Clear(); 
+0

我想他想知道工作是否失败。你怎么测试它? – Rup 2011-05-03 15:42:27

+0

我已经有你提供的代码:)事情是我想100%确定备份操作成功,这对我想要做的事情至关重要。 – kubal5003 2011-05-03 16:06:55

+0

你能检查一下完整的事件吗? – Arrabi 2011-05-03 18:28:53

0

我已经调查使用Reflector.NET问题(我想这是合法的,因为展鹏是女士金牌认证合作伙伴和反思.NET开箱即用的.NET库)。当我发现了方法抛出两种类型的异常:

FailedOperationException - 在大多数情况下,其他的异常“翻译”(我想转换装置创造新的FailedOperationException和设置的InnerException什么实际抛出)

UnsupportedVersionException - (?这是SQL Server 2008中)在一种情况下,当日志截断设置为TRUNCATEONLY和服务器主要版本更或等于10

这部分解决了我的问题,因为我不是100%肯定的是,如果出现问题那些电子xceptions将被抛出。