Author:David Euler
Date: 2004/09/28
Email:de_euler-david@yahoo.com.cn
有任何問(wèn)題,請與我聯(lián)系:)
有時(shí)候我們需要多次運行一個(gè)文件夾下所有的sql腳本(可能時(shí)txt或者sql等文本文件)來(lái)更新Schema,文件多的時(shí)候需要多次執行,那么可以使用多條語(yǔ)句來(lái)執行sql腳本。
--下面的查詢(xún)語(yǔ)句在SQL Query中運行,將執行d:\vss下面的指定sql腳本,這些腳本的后綴都是txt
exec 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‘
當然,我們完全可以不使用存儲過(guò)程,而只是在一個(gè)批處理文件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語(yǔ)句用來(lái)執行存儲過(guò)程,xp_cmdshell是master數據庫中的一個(gè)擴展存儲過(guò)程,可以用來(lái)執行系統命令的字符串,
比如exec master..xp_cmdshell ‘dir *.exe‘查看當前目錄下所有的exe文件。
2.isql是sql server的一個(gè)實(shí)用工具,可以理解程一個(gè)外部程序,如果sql使用的默認安裝,可以在C:\Program Files\Microsoft SQL Server\80\Tools\Binn目錄中找到這個(gè)isql.exe文件,isql可以用來(lái)執行Transact-SQL語(yǔ)句,存儲過(guò)程,以及腳本文件,
參數-U用來(lái)指定登陸服務(wù)器的用戶(hù)名,-P用來(lái)指定密碼,
參數-i用來(lái)指定讀取執行的腳本文件,
參數-o用來(lái)指定保存輸出結果的文件名。
3.其他Oracle,DB2,MySQL,PostgreSQL等幾個(gè)常用數據庫中也有相應的工具也可以實(shí)現類(lèi)似的功能。
聯(lián)系客服