2011-04-27 121 views
4

我正在尋找一種方法在C#代碼中創建SQL Server 2008數據庫的備份。然後我希望再次使用C#代碼將此數據庫重新導入本地數據庫服務器。從C#導出SQL Server數據庫並重新導入

我知道這可以很容易地通過SQL Server Management Studio來完成,但需要一種自動化的方式來實現這一點。

回答

1

你想要做的是使用常規連接對象(SqlConnection等)從C#對主數據庫運行幾個腳本。

有一些命令可用於備份和命令來恢復文件。您只需要在應用程序中管理文件即可。

恢復:

http://blog.sqlauthority.com/2007/02/25/sql-server-restore-database-backup-using-sql-script-t-sql/

要備份:

http://msdn.microsoft.com/en-us/library/ms191304.aspx

還有一組來自微軟的DLL來對SQL Server數據庫不屬於ADO的一部分工作.NET提供程序集。下面是覆蓋這些教程:

http://www.codeproject.com/KB/database/SQL_Server_2005_Database.aspx

3

最快的方式是將SQL命令連接到服務器並執行備份和恢復直接SQL Server數據庫。谷歌以下獲取語法; 用於備份語法; tsql備份數據庫msdn 對於Restore Syntax; tsql恢復數據庫msdn

雖然有上述替代方案;

  1. 使用SMO(SQL管理對象),用於幫助管理從.net應用程序 SQL一個.net庫。以下鏈接提供了許多有用的參考資料鏈接; http://social.msdn.microsoft.com/Forums/en-US/sqlsmoanddmo/thread/5638666e-cd2e-467d-bd03-6d20e2cbbe1b/

  2. 使用SQL本身。您是否知道SQL維護計劃可以在本地服務器上執行備份和還原,並且可以隨時調度運行。您可能需要實施一項作業,將備份文件複製到備用服務器。最糟糕的是,可以使用兩臺服務器上的計劃組合。

我更傾向於將嘗試維護計劃首先考慮的是,一個DBA會看到它瞭解它,並能夠將其更改爲適應經營環境。此外,您還可以掛起錯誤信息,當它發生故障時通過電子郵件發送/記錄,並且全部內置功能。

如果您確實想要或必須編寫應用程序,請考慮SQL命令選項,因爲SMO僅限於特定版本的SQL Server。舊版本使用DMO。不知道下一個版本會是什麼=)

1

一個更簡單的解決方案是編寫一個SSIS包,輕鬆完成工作。 (作爲維護計劃) 然後通過.NET應用程序(Web或Winform),您可以使用參考Microsoft.SQlServer.ManagedDTS控制包的調用,或使用控制檯應用程序並安排它每x次運行一次以自動執行處理。 如果您不想使用C#,那麼只需安排維護計劃的作業