SQL Server中使用外部命令執行sql指令碼
來源:互聯網
上載者:User
server|指令碼|執行
Author:David Euler
Date: 2004/09/28
Email:de_euler-david@yahoo.com.cn
有任何問題,請與我聯絡:)
有時候我們需要多次運行一個檔案夾下所有的sql指令碼(可能時txt或者sql等文字檔)來更新Schema,檔案多的時候需要多次執行,那麼可以使用多條語句來執行sql指令碼。--下面的查詢語句在SQL Query中運行,將執行d:\vss下面的指定sql指令碼,這些指令碼的尾碼都是txtexec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema.txt '
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_030311.txt '
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_030416.txt'
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_030417.txt'
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_030513.txt'
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_030613.txt'
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_031010.txt'
exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\MSSchema_050810.txt' exec master..xp_cmdshell 'isql -U sa -P 123 -i d:\vss\TaxInvoice.sql' 當然,我們完全可以不使用預存程序,而只是在一個批次檔updateschema.cmd中執行這些命令,下面是updateschema.cmd的內容:;下面的命令將執行d:\vss下面的指定sql指令碼:isql -U sa -P 123 -i d:\vss\MSSchema.txt
isql -U sa -P 123 -i d:\vss\MSSchema_030311.txt
isql -U sa -P 123 -i d:\vss\MSSchema_030416.txt
isql -U sa -P 123 -i d:\vss\MSSchema_030417.txt
isql -U sa -P 123 -i d:\vss\MSSchema_030513.txt
isql -U sa -P 123 -i d:\vss\MSSchema_030613.txt
isql -U sa -P 123 -i d:\vss\MSSchema_031010.txt
isql -U sa -P 123 -i d:\vss\MSSchema_050810.txt 註:1.exec語句用來執行預存程序,xp_cmdshell是master資料庫中的一個擴充預存程序,可以用來執行系統命令的字串, 比如exec master..xp_cmdshell 'dir *.exe'查看目前的目錄下所有的exe檔案。 2.isql是sql server的一個工具 + 生產力,可以理解程一個外部程式,如果sql使用的預設安裝,可以在C:\Program Files\Microsoft SQL Server\80\Tools\Binn目錄中找到這個isql.exe檔案,isql可以用來執行Transact-SQL語句,預存程序,以及指令檔,參數-U用來指定登陸伺服器的使用者名稱,-P用來指定密碼,參數-i用來指定讀取執行的指令檔,參數-o用來指定儲存輸出結果的檔案名稱。 3.其他Oracle,DB2,MySQL,PostgreSQL等幾個常用資料庫中也有相應的工具也可以實作類別似的功能。