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