2014-10-18 49 views
0

我有一個帶有MS SQL後端的VB.net應用程序。我希望能夠獲取遠程數據庫的「快照」,以便將數據庫克隆到其他位置。我想通過構建類似於SQL Management Studio創建的SQL生成腳本來完成此操作。我發現這個代碼:通過構建SQL備份遠程SQL數據庫生成腳本

How to generate create script of tables with their constraints using SQL query in SQL Server 2008

打印出腳本,在SQL Studio中的消息窗口表達,但我需要它返回的結果,所以我可以從我的.NET應用程序調用它並獲得腳本回來,我可以將它們保存到一個文本文件中,準備在其他地方重新創建數據庫。誰能幫忙?

該任務的下一個階段是腳本編寫,然後插入「Live」數據庫中的所有數據。我知道我可以在SQL Studio中使用腳本工具來完成所有這些工作,但我需要將它嵌入到我的應用程序中,這樣我的用戶就可以在本地克隆他們的網絡數據庫以便遠離網絡。

+0

「我希望能夠獲取遠程數據庫的」快照「,以便將數據庫克隆到其他位置」 - 備份? – 2014-10-18 00:33:25

+0

這是一種備份。我無法創建實際的SQl備份(.bak),因爲數據庫將位於與執行「備份」的軟件不同的計算機上。我認爲我唯一的選擇是建立一個「生成腳本」來重建數據庫,而不是恢復備份 – 2014-10-18 00:37:54

回答

0

選項如果您不想同步服務器版本。

  • 將舊版本的SQL Server升級到與較新的SQL Server處於同一級別。
  • 將新對象從新數據庫中編出來,然後使用bcp進程從新數據庫中提取數據並將其導入舊數據庫。
  • 使用SQL Server導入和導出嚮導構建SSIS包來移動數據(它只會移動數據)。
  • 構建自定義SSIS包來執行數據移動。
  • 使用複製將數據從較新的數據庫移動到較舊的數據庫。
  • 使用其他形式的腳本(例如PowerShell)來保持數據庫同步。

你應該還是想用壓縮數據庫備份,那麼你可以將數據庫恢復到結束與一個較小的足跡用戶。還有其他選項,如日誌傳送,數據庫鏡像和設置可用性組。這些都需要比採取壓縮備份更多的工作。

BACKUP DATABASE [Gigabits] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Gigabits.bak' WITH NOFORMAT, NOINIT, NAME = N'Gigabits-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 

enter image description here

enter image description here

不能安裝/拆卸或備份/從一個較新的版本(SQL Server 2008 R2中 - 10.50.1600)恢復數據庫的SQL Server下來的舊版本(2008 - v10.00.1600) - 內部文件結構太不同了,不支持向後兼容性。

您可以圍繞由

這個問題得到使用的所有計算機的SQL Server版本相同 - 那麼你就可以輕鬆備份/恢復情況

否則,你可以創建數據庫腳本之間的數據庫結構(表格,視圖,存儲過程等)。)和SQL Server Management Studio(任務>生成腳本)中的內容(表中包含的實際數據)或使用第三方工具

,或者您可以使用第三方工具,如Red-Gate的SQL比較和SQL數據比較可以在源和目標之間進行「差異化」,根據這些差異生成更新腳本,然後在目標平臺上執行這些腳本;這適用於不同的SQL Server版本。

相關問題