2017-07-27 75 views
1

我已經備份了我的數據庫。使用遠程SQL Server上的C#從備份文件創建數據庫

在我的程序中編輯它之後,它是一個新的newDb.bak文件(在我的PC上)。

如何在遠程SQL Server上恢復此新數據庫,如果我有連接字符串(我知道ip,登錄名和密碼)?

主要是我只能使用C#(而不是SQL Server Management Studio)來做到這一點。

回答

2

不幸的是沒有任何直接的方法從本地備份文件遠程恢復數據庫。

但是,替代解決方案是在客戶端和服務器都有權訪問的某些地方(本地端或服務器端無關緊要)創建共享位置。 (更新:此外,確保將要執行恢復SQL服務器有權限的目錄,你複製備份 - @KSib) 然後從文件還原數據庫:

  1. 在 服務器上覆制newDb.bak\\serverip\$sharedfolder\newDb.bak
  2. RESTORE DATABASE YOURDB FROM DISK = N'\\serverip\$sharedfolder\newDb.bak';

如果你想我可以分享C#恢復數據庫的源代碼。

更新:另一種解決方案是創建一個包含varbinary列的表,通過SqlCommandSqlBulkCopy插入來自當地爲備份文件的內容,然後通過bcp這樣這個導出文件內容到一些地方在你的服務器:

BCP "SELECT FileContent FROM createdTable WHERE ID = 1000" queryout "C:\newDB.bak" -T

然後你就可以輕鬆地執行恢復命令!

另外,您還可以創建一個服務器端StoredProcedure,其中包含一個事務以獲取文件內容作爲輸入參數,並將所有命令作爲一個事務處理。

我希望能對你有所幫助:)。

+0

>沒有任何直接的方式 Oooh廢話。 – KamikyIT

+0

此外,請確保將要執行還原的SQL Server具有對要將備份複製到的目錄的權限。 – KSib

+0

@KamikyIT我找到了一種新的方式並更新我的文章。讓我知道如果不清楚:) –

相關問題