淺談如何在SQL Server中生成腳本
在生成腳本過程中,有很多參數(shù)可以選擇,合理的配置這些參數(shù),可以讓我們很方便的按照我們的期望生成腳本。
生成腳本的一些選項(xiàng),如下圖:
我這里是SQL 2005 的選項(xiàng), SQL 2008 的選項(xiàng)跟這個(gè)稍有差異。
這個(gè)差異可以參看下面兩篇文章
SQL Server 2005 的生成 SQL Server 腳本向?qū)Вā斑x擇腳本選項(xiàng)”頁)
http://technet.microsoft.com/zh-cn/library/ms186472(SQL.90).aspx
SQL Server 2008 的生成 SQL Server 腳本向?qū)Вā斑x擇腳本選項(xiàng)”頁)
http://technet.microsoft.com/zh-cn/library/ms186472.aspx
參數(shù)說明,其中紅色部分是我比較常用的。
常規(guī)選項(xiàng)部分:
Ansi Padding
在每個(gè) CREATE TABLE 語句前后添加 SET ANSI_PADDING ON 語句。默認(rèn)值為 True。
Append to File
將此腳本添加到現(xiàn)有腳本的底部,在“輸出選項(xiàng)”頁中指定。默認(rèn)值為 False,指示新腳本將覆蓋以前的腳本。
Continue Scripting on Error
True 指示出錯(cuò)時(shí)停止編寫腳本。值為 False 時(shí),則繼續(xù)編寫腳本。默認(rèn)值為 False。
Convert UDDTs to Base Types
值為 True 時(shí),用戶定義數(shù)據(jù)類型被轉(zhuǎn)換為用于創(chuàng)建用戶定義數(shù)據(jù)類型的基本數(shù)據(jù)類型。將運(yùn)行腳本的數(shù)據(jù)庫中不存在用戶定義數(shù)據(jù)類型時(shí),請使用 True。默認(rèn)值為 False,指示將使用 UDDT 為用戶定義數(shù)據(jù)類型編寫腳本。
Generate Script for Dependent Objects
生成依賴對象的腳本為在執(zhí)行所選對象的腳本時(shí)必須存在的任何對象生成腳本。默認(rèn)值為 True。
Include Descriptive Headers
值為 True 時(shí),說明性注釋被添加到腳本中,將腳本分成若干個(gè)部分,每個(gè)對象為一個(gè)部分。默認(rèn)值為 False。
此項(xiàng)我生成時(shí)習(xí)慣修改為true,這樣可以看到注釋
Include If NOT EXISTS
值為 True 時(shí),腳本包含一個(gè)用于檢查對象在數(shù)據(jù)庫中是否已經(jīng)存在的語句,并在對象已經(jīng)存在的情況下不嘗試創(chuàng)建新對象。默認(rèn)值為 True。
Include system constraint names
包含系統(tǒng)生成的約束名稱,以強(qiáng)制聲明性引用完整性。默認(rèn)值為 False。有
Script Collation
將排序規(guī)則信息包含在腳本中。默認(rèn)值為 False。
參看 http://technet.microsoft.com/zh-cn/library/ms187582(SQL.90).aspx
Script Create
包含每個(gè)對象的 CREATE 語句。默認(rèn)值為 True。
Script Defaults
列存在于原始對象中時(shí)包含它們的默認(rèn)值。默認(rèn)值為 True。
Script Drop
包含每個(gè)對象的 DROP 語句。默認(rèn)值為 False。
Script Extended Properties
如果對象具有擴(kuò)展屬性,則在腳本中包含擴(kuò)展屬性。默認(rèn)值為 True。
Script for Server Version
創(chuàng)建可在選定的 SQL Server 版本上運(yùn)行的腳本。無法為早期版本編寫 SQL Server 2005 新增功能的腳本。某些為 SQL Server 2005 創(chuàng)建的腳本無法在運(yùn)行 SQL Server 較早版本的服務(wù)器上運(yùn)行,也無法在具有較早數(shù)據(jù)庫兼容級(jí)別設(shè)置的數(shù)據(jù)庫中運(yùn)行。默認(rèn)為 SQL Server 2005。
Script Logins
要編寫腳本的對象是數(shù)據(jù)庫用戶時(shí),請使用“編寫登錄腳本”選項(xiàng)創(chuàng)建用戶所依賴的登錄。默認(rèn)值為 False。
Script Object-Level Permissions
包含對數(shù)據(jù)庫中的對象設(shè)置權(quán)限的腳本。默認(rèn)值為 False。
Script Owner
值為 True 時(shí),CREATE 語句包含當(dāng)前的對象所有者或架構(gòu)。值為 False 時(shí),CREATE 語句不包含對象所有者或架構(gòu),而且腳本創(chuàng)建的對象將對正在執(zhí)行該腳本的用戶使用默認(rèn)值。默認(rèn)值為 True。
如果 true, 比如存儲(chǔ)過程名字就可能是 dbo.*** 如果 false,則沒有dbo.這個(gè)信息。我習(xí)慣于false。
Script Statistics
設(shè)置為“編寫統(tǒng)計(jì)信息腳本”時(shí),將包含 CREATE STATISTICS 語句以重新創(chuàng)建有關(guān)對象的統(tǒng)計(jì)信息。“編寫統(tǒng)計(jì)信息和直方圖腳本”設(shè)置還會(huì)創(chuàng)建直方圖信息。默認(rèn)為不編寫統(tǒng)計(jì)信息腳本。
Script USE DATABASE
將 USE DATABASE 語句添加到腳本中。要確保在正確的數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫對象,請包含 USE DATABASE 語句。如果預(yù)計(jì)腳本將在其他數(shù)據(jù)庫中使用,請選擇 False 以省略 USE DATABASE 語句。默認(rèn)值為 False。
Script VarDecimal Options
包含腳本的 vardecimal 存儲(chǔ)選項(xiàng)。默認(rèn)值為 False。
參看 http://technet.microsoft.com/zh-cn/library/bb326755(SQL.90).aspx
表和視圖部分
Script Check Constraints
將 CHECK 約束添加到腳本中。默認(rèn)值為 True。CHECK 約束要求輸入表中的數(shù)據(jù)滿足某些指定的條件。
Script Foreign Keys
將外鍵添加到腳本中。默認(rèn)值為 True。外鍵可指示和強(qiáng)制保持表間的關(guān)系。
Script Full-Text Indexes
包含每個(gè)表的全文本索引或腳本的索引視圖。默認(rèn)值為 False。
Script Indexes
添加每個(gè)表的聚集索引、非聚集索引和 XML 索引,或添加腳本的索引視圖。默認(rèn)值為 False。
Script Primary Keys
添加對表創(chuàng)建主鍵腳本。默認(rèn)值為 True。主鍵可唯一標(biāo)識(shí)表的每一行。
Script Triggers
添加對表創(chuàng)建觸發(fā)器腳本。默認(rèn)值為 True。觸發(fā)器會(huì)在數(shù)據(jù)被修改時(shí)引發(fā)操作。
Script Unique Keys
添加對表創(chuàng)建唯一鍵腳本。唯一鍵可防止輸入重復(fù)的數(shù)據(jù)。默認(rèn)值為 True。
其他的一些選項(xiàng)大家都很熟悉,就是讓我們選擇那些數(shù)據(jù)庫對象要生成。忽略不計(jì)。
在生成何種格式時(shí),SQL Server 很方便的給我們提供了一些選項(xiàng),如下:
這里可以方便的選擇以 Unicode 或“ANSI 文本”格式將腳本生成到 .sql 文件中。
而且可以所有腳本在一個(gè)文件,也可以每個(gè)對象的腳本在一個(gè)自己的文件。
再后面就是確認(rèn)生成選項(xiàng),然后就生成了。