2011-03-29 50 views
10

我的主要原因是跟蹤我的應用程序的數據庫模式更改。在SQL Server Management Studio中,我能夠生成創建數據庫的創建腳本,但它不包含任何測試數據。理想情況下,當腳本運行時,應該刪除現有數據庫(假設它已經存在),然後使用這個包含模式更改和測試數據的新腳本來重新創建它。如何生成我的數據庫的腳本,因爲它是?

那麼我該如何生成一個腳本,它將創建一個包含所有表,存儲過程,觸發器,視圖,測試數據等的數據庫?

我試過使用導入/導出功能,但這並不好,因爲它似乎沒有複製存儲過程。另外,有一個腳本會很好,所以我可以使用mercurial來跟蹤對模式的更改。

我正在使用SQL Server Express 2008 R2以及SQL Server Management Studio。

+0

您可以右鍵單擊您的數據庫(在SQL Server管理工作室上)並選擇「生成腳本」。在那裏,你可以選擇你想要腳本的數據庫的每個方面,包括索引,觸發器,用戶,模式和數據(其中包括) – Lamak 2011-03-29 18:29:07

+0

也許我只是密集,但我已經嘗試過,並且根本沒有數據創建的文件。 – Pete 2011-03-29 18:33:23

+1

給你提供了很多選擇,其中之一是腳本數據(默認情況下,這個選項是false) – Lamak 2011-03-29 18:43:09

回答

21

你沒有提到的SQL Server的版本,但在2008年SQL這是很容易

SQL 2008
展開數據庫
右鍵單擊數據庫
選擇任務>生成腳本
生成和 發佈對話框將打開
選擇您的 對象(即表格,特效等)
單擊下一步在設置腳本
選項選擇高級選項
U的nDer 一般選擇SCRIPT DROP和CREATE - 腳本刪除並創建數據的
類型腳本 - 架構和 數據
關閉高級窗口
選擇要 保存到文件中。

+0

的現貨我有點尷尬,我找不到那個。非常感謝。 – Pete 2011-03-29 19:03:02

+1

@Pete - 我不會太尷尬,因爲它很隱蔽!這是一個有用的功能,應該更好地在SSMS中浮出水面。 – 2011-04-02 19:35:39

+1

它適用於MS SQL 2012 – neftedollar 2016-04-15 16:22:43

0

通常我會在開始新的開發之前從數據庫進行備份。

最好的辦法是在需要時恢復備份,我不知道如何通過腳本獲取它!

3

我寫了一個名爲SchemaZen的開源命令行實用程序。它比來自management studio的腳本要快得多,它的輸出對版本控制更友好。它支持模式和數據的腳本。

若要生成腳本運行:

schemazen.exe script --server localhost --database db --scriptDir c:\somedir

然後重新創建數據庫從腳本運行:

schemazen.exe create --server localhost --database db --scriptDir c:\somedir
1

當心在數據庫歸類差異。如果您使用不區分大小寫的排序規則在數據庫上開發數據庫,​​並使用區分大小寫的排序規則嘗試運行SSMS生成的腳本作爲數據庫,則大小寫錯誤會導致腳本中斷。

相關問題