1. 程式人生 > >SQLServer:如何生成資料庫的指令碼

SQLServer:如何生成資料庫的指令碼

三種方式:

1、程式設計方式實現;

--功能強大,但要求有程式設計基礎,沒有相關的技術文件。

--適合:表、索引等無法通過其它方法批量生成的物件。

2、利用系統檢視實現;

--獲取非常方便,但只能獲取到  標量函式、表值函式、儲存過程、觸發器、檢視  這幾種物件,其它物件無法獲取。

3、資料庫手動操作生成指令碼;

--較為方便, 但失去了自動化和可程式設計。

第一種:

1. 引用SQL Server自帶的dll檔案, 比如我本機(SQL Server2014)在:

D:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies

Microsoft.SqlServer.ConnectionInfo.dll


Microsoft.SqlServer.Management.Sdk.Sfc.dll

Microsoft.SqlServer.Smo.dll

Microsoft.SqlServer.SqlEnum.dll (不深入可不用)

2. 類似的文章很多, 就不寫demo了, 參考文章:

第二種:

--標量函式、表值函式、儲存過程、觸發器、檢視(包含系統物件)
SELECT * FROM sys.all_sql_modules
--標量函式、表值函式、儲存過程、觸發器、檢視
SELECT * FROM sys.sql_modules
--查詢微軟示例庫(AdventureWorks2014)中能夠生成指令碼的物件型別
SELECT type_desc,type FROM sys.objects AS o WHERE o.[object_id] IN (
	SELECT sys.sql_modules.[object_id] FROM sys.sql_modules
)
GROUP BY TYPE,o.type_desc
ORDER BY o.type_desc
/*
type_desc	                type
SQL_SCALAR_FUNCTION	        FN
SQL_STORED_PROCEDURE	        P 
SQL_TABLE_VALUED_FUNCTION	TF
SQL_TRIGGER	                TR
VIEW	                        V  
*/

第三種: