2011-05-03 65 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將被拋出。