繼上一篇文章對您的數據庫對象的腳本,我創建了一個存儲過程,自動為您的數據庫腳本和腳本寫入到一個文件夾。 此腳本創建在SQL Server 2005。 這是有用的,因為現在所有的對象如表,存儲過程,視圖和函數在一個腳本。
[ dbo ] . [ sp_GenDBscript ] 的CREATE PROCEDURE [dbo的]。[Sp_GenDBscript] ( 150 ) -- Bijv: 'D:\SQLDATA\'備份@路徑的VARCHAR(150) -例子:的D:\ SQLDATA \' 正如 / * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ 最高人民法院目的:生成腳本的數據庫,所有對象 創建人:羅納德Kraijesteijn 建立時間:2010年3月 更新:X ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ 需要: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=56e5b1c5-bf17-42e0-a410-371a838e570a&displayLang=en 例子 Exec的sp_GenDBscript的D:\ SQLDATA' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜〜〜* / 動工 設定SET NOCOUNT ON @ PATH AS VARCHAR ( 150 ) 的DECLARE @ 路徑為varchar(150) @CMD AS VARCHAR ( 150 ) 隨著的DECLARE @加利福尼亞的VARCHAR(150) @Param AS VARCHAR ( 150 ) 隨著的DECLARE @ Params 的VARCHAR(150) @ SQL AS VARCHAR ( 256 ) 的DECLARE @ 的SQL為varchar(256) @ DATE AS VARCHAR ( 10 ) 的DECLARE @ 日期為varchar(10) @TextFile AS VARCHAR ( 150 ) 的DECLARE @文本文件為varchar(150) @MkdirStr AS VARCHAR ( 150 ) 的DECLARE @ MkdirStr 為varchar(150) @ TIME AS VARCHAR ( 150 ) 的DECLARE @ 時間為varchar(150) @ DATABASE AS VARCHAR ( 150 ) 的DECLARE @ 數據庫為varchar(150) @RC AS INT 作為區局的DECLARE @ 詮釋 @ TIME = REPLACE ( CONVERT ( VARCHAR , GETDATE ( ) , 114 ) , ':' , '' ) 設置 @ 時間 = 替換 (轉換(VARCHAR,不同 的getDate(),114),':','') @ DATE = CONVERT ( VARCHAR , GETDATE ( ) , 112 ) 設置 @ 日期 = 加工(VARCHAR,不同 的getDate(),112) @ PATH = '"C: \P rogram Files \M icrosoft SQL Server \9 0 \T ools \P ublishing \S qlPubWiz.exe"' @ 設置路徑 =的C: 的\ p rogram Files文件\ M icrosoft SQL Server的\ 9 0 \ Ŧ ools \ ublishing P \ S的 qlPubWiz.exe -下載清單數據庫 CUR_DB CURSOR DECLARE CURSOR的 CUR_DB [ name ] 對於SELECT [名字] sys. databases 從 sys。 數據庫 [ name ] NOT IN ( 'master' , 'tempdb' , 'model' , 'msdb' , 其中,[ 名稱]不中('師父','tempdb中','模式','msdb資料', , 'ReportServerTempDB' ) 報表服務器,ReportServerTempDB') -創建數據庫腳本每 CUR_DB 開放 CUR_DB CUR_DB INTO @ DATABASE 數據庫的FETCH改成 @ CUR_DB @@FETCH_STATUS = 0 在WHILE @ @的fetch_status = 0 動工 @MkdirStr = 'mkdir ' + @BackupPath + ' \' + @Database + ' \script ' 設置 @ MkdirStr ='mkdir'+ @備份路徑+'\'+ @數據庫+'\腳本 _ ' + @Date + ' _ ' + @Time + ' . SQL ' 文本文件的SET @ = @數據庫+'_'+ @日期+'_'+ @時間+'。 的SQL script ' + @BackupPath + ' \ ' + @Database + ' \script\ ' + @TextFile 設置@帕拉姆庫馬拉='腳本'+ @備份路徑+'\'+ @數據庫+'\腳本\+ @文本文件 -schemaonly -d ' + @Database +模式只有- d'+ @數據庫 集的SQL = @ @ @帕拉姆庫馬拉路徑+ -檢查目錄存在,如果沒有,創建目錄 Exec的鋼筋混凝土= @ @ master.dbo.xp_cmdshell MkdirStr,NO_OUTPUT -製作備份 ## START scripting DATABASE : %s ## ', 10, 0, @Database ) WITH NOWAIT ; 的RAISERROR('## 啟動數據庫的腳本:%s的##',10,0,@數據庫)與NOWAIT這樣的; Exec的鋼筋混凝土主.. xp_cmdshell的@ = @ SQL中,no_output 如果@鋼筋混凝土<> 0 An Error occured WHILE scripting DATABASE : ' + @Database 打印'時 發生錯誤的腳本數據庫:'+ @數據庫 ## Done scripting DATABASE : %s ## ', 10, 0, @Database ) WITH NOWAIT ; 的RAISERROR('##完成腳本數據庫:%s的 ##',10,0,@數據庫)與NOWAIT這樣的; 數據庫的FETCH CUR_DB改成@ 完 關閉CUR_DB 的LOCATE CUR_DB牌 完






















標籤