2011-04-24 98 views
82

我有一個SQL數據庫和表,我想在另一個SQL Server中複製。我想創建一個SQL腳本,在一個腳本中創建數據庫和表。創建SQL腳本,創建數據庫和表

我可以使用SQL Management Studio爲每個案例(數據庫和表)創建「創建」腳本,但是我想知道是否將兩個「創建」腳本合併到一個腳本中就足夠了。

謝謝。

+21

你能否改變接受的答案? – skolima 2013-12-10 11:51:16

+1

@skolima同意,接受的答案(由克萊頓)最終會得到結果,但CJM的答案是更快 – elmer007 2016-03-04 15:50:19

回答

3

在SQL Server Management Studio中,您可以右鍵單擊要複製的數據庫,然後選擇「Script Database as」以使該工具創建適當的SQL文件以在另一臺服務器上覆制該數據庫。您可以爲要創建的每個表重複此過程,然後將這些文件合併到單個SQL文件中。不要忘記在創建數據庫之後但在任何表創建之前添加using語句;)

+169

繼續滾動... CJM的方法是99.99999%更好 – ewitkows 2012-07-26 20:34:25

+3

@tony爲什麼你選擇這個答案?這是非常古老的方式,因爲ewitkows表示CJM的方式對於當前版本的SQL Server是正確的。 – QMaster 2014-02-24 09:56:54

+1

@tony選擇其他答案! – JohnOsborne 2014-12-15 00:52:17

-2

是的,創建數據庫,然後創建表,然後插入數據,所有在一個腳本。無所不能

1

是的,您可以根據需要將任意數量的SQL語句添加到單個腳本中。只需注意一點:訂單很重要。在創建它之前,您不能插入表格;直到主鍵被插入後才能設置外鍵。

341

雖然Clayton的答案會在那裏(最終)得到您的結果,但在SQL2005/2008/R2/2012中,您更容易選項:

右鍵單擊數據庫,選擇Tasks,然後Generate Scripts,它將啓動腳本嚮導。這允許您生成一個可以重新創建完整數據庫的單個腳本,包括表/索引約束/存儲過程/函數/用戶等等。您可以配置多種選項來自定義輸出,但其中大部分是自我解釋的。

如果您對默認選項感到滿意,您可以在幾秒鐘內完成整個工作。

如果你想重新創建數據庫中的數據(作爲一系列INSERTS),我還推薦SSMS Tools Pack(免費的SQL 2008版本,付費的SQL 2012版本)。

+5

這是非常好的,我只是這樣做,爲我節省了大量的時間。 – 2013-03-28 14:49:18

+0

@CJM我在想我幾乎愛你! :-P – 2015-01-15 10:54:50

+0

我完全遵循了這些步驟,但我仍然得到了絕對噸的錯誤,我無法糾正它們。任何幫助? – user1789573 2015-04-15 14:42:47

6

不知道爲什麼SSMS不考慮執行順序,但它沒有。對於小型數據庫來說這不是問題,但如果數據庫有200個對象呢?在這種情況下,執行順序確實很重要,因爲通過所有這些並不容易。

對於由SSMS產生無序的腳本,你可以去以下

a)執行腳本(一些對象會不會有些插入,會有一些錯誤)

B)取下腳本中的所有對象已被添加到數據庫

C)返回一個),直到一切最終被執行

替代選擇是使用第三方工具,如ApexSQL Script或任何其他工具已經男性在這個線程中(SSMS工具包,Red Gate等)。

所有這些都將照顧到你的依賴,併爲你節省更多的時間。

8

一個很好的解釋可以在這裏找到:Generate script in SQL Server Management Studio

禮貌阿里·伊薩這裏是你必須做的:

  1. 右鍵單擊數據庫(不表),並選擇任務 - - >生成腳本
  2. 下一步 - >選擇請求的表/表(從選擇特定的數據庫對象)
  3. Nex t - >單擊高級 - >類型的數據腳本=架構和數據

如果您要創建一個腳本,只生成表(無數據),您可以跳過高級部分的說明!