2009-11-16 137 views
1

我想知道我的選項用於複製SQL Server數據庫。如果這是重複的,我會刪除我的問題,但在使用搜索時找不到答案。如何複製SQL Server數據庫

這是我已經嘗試過:

- 寫入數據庫的SQL腳本。
當我這樣做時,我似乎總是遇到一個問題,我必須手動調整東西。像鍵或排序規則衝突問題一樣。

此外,這似乎很慢。我的最後一個腳本文件是1.5Mb,但需要1小時才能運行。在90%時出現錯誤也很煩人。

我主要是使用sql腳本來工作,但感覺就像我浪費了很多時間試圖修復一些小錯誤並等待sql執行。

- 使用微軟SQL Server Management Studio中
導出功能。如果我是正確的,這並不拷貝存儲過程,視圖和/或鍵。

-detach /連接
是否正確地認爲這多半是不可能的共享hostings,你只能得到一個數據庫?嘗試此操作時遇到權限問題。

這就是我試過的一切。

由於提前,

Pickels

+0

您是否嘗試過備份和恢復? – 2009-11-16 18:21:13

+0

似乎我的2個共享主機不喜歡我做備份。除非我錯過了非常明顯的東西。 – Pickels 2009-11-16 20:48:00

回答

5

這取決於你的託管服務提供商允許。有些允許附加/恢復,有些則不允許,有些則允許附加/恢復,但每次事件收費。即使在允許的情況下,數據庫版本也非常重要,因爲引擎能夠升級數據庫,但不能降級版本,所以您的開發版本最多隻能是提供者的版本,而不能更新。

但最終這是一個發展過程的問題。您不應該通過修改數據庫來開發,而應該創建在源代碼管理下的腳本來應用任何應用程序模式更改(包括所有過程和所有目錄數據)。應用程序應該能夠從這些腳本升級數據庫模式,包括初始部署。我的建議是在擴展屬性中使用應用程序定義的版本,並使用腳本來更新應用程序模式版本:Version Control and your Database

但是現在貓已經不在行囊,而且您已經做了不好的練習,您最好的選擇是一個很好的第三方腳本/比較實用程序,如SQL Compare

+0

我正在寫關於版本控制,持續集成和可重複過程的內容。但你之前得到了:D +1 – 2009-11-16 18:33:44

+0

我想要開始使用版本控制,所以這個答案真的很棒,謝謝。 – Pickels 2009-11-16 20:47:16

5

我覺得最簡單的方法是使用備份/恢復選項。備份數據庫,將文件複製到新服務器,然後進行恢復。您需要先在第二臺服務器上創建一個空白數據庫,但不需要定義任何表或任何其他內容。然後,右鍵單擊新的空白數據庫,然後從您在第一臺服務器上備份的文件中選擇還原和還原。

當您執行還原時,如果原始數據庫文件存儲在新服務器上不存在的路徑中,或者您想要還原到另一路徑,則可能需要轉到「選項」頁面並設置「還原爲」路徑一個不同的位置。默認情況下,它會嘗試將數據庫恢復到與原始服務器上相同的路徑。

+0

爲什麼你需要在第二臺服務器上創建一個空白數據庫?您可以發出RESTORE DATABASE命令,而不首先存在空的外殼。 – 2009-11-16 18:23:15

+0

您仍然需要選擇目標數據庫,不是嗎?據我所知,你不能在同一步創建一個新的數據庫,至少不能通過SQL Server管理。你可能是對的,但我認爲數據庫需要先存在。 – TLiebe 2009-11-16 18:28:05

+0

不,恢復屏幕允許您爲恢復的數據庫手動輸入名稱並選擇備份文件的位置。無需通過現有的空白區域進行恢復。 – MartW 2009-11-16 18:37:08

0

嘗試完整備份和恢復。

3

如果您要遷移到MS SQL Server 2008,您可以選擇「複製數據庫」,您可以選擇複製所有或選定的數據庫。

右鍵單擊數據庫 - >任務 - >複製數據庫。通過嚮導並選擇「分離並附加」 - 方法或「SQL管理方法」(如果您希望數據庫保持聯機狀態)。

但要注意的是,如果你的目標SQL這隻能是MSSQL 2008

0

嘗試DBSourceTools。 http://dbsourcetools.codeplex.com
它的開放源碼,專門設計用於腳本整個數據庫 - 表,視圖,過程到磁盤。
然後,您只需創建一個部署目標即可。
點擊部署 - 該工具會將您的數據庫複製到新的目標。
通過使用SQL批量複製來上傳數據,它可以在幾秒鐘內完成10000條記錄。

玩得開心

相關問題