巧用SQL Server 2000的isql進(jìn)行批量SQL處理
SQL Server 2000數(shù)據(jù)庫有一個(gè)dos命令工具叫iSql,可以在dos命令下執(zhí)行SQL操作,當(dāng)我們?cè)诳蛻舳嘶蜻h(yuǎn)程執(zhí)行數(shù)據(jù)庫操作等工作時(shí)是很方便的。本文我們主要介紹isql命令的使用,并通過兩個(gè)示例來對(duì)isql的使用加以詳細(xì)解釋,接下來我們開始介紹這一部分內(nèi)容。
isql命令的參數(shù):
{-U login_id} --登錄用戶名
{-P password]} --登錄密碼
{-S server} --節(jié)點(diǎn)ip地址
{-d use database name] --操作的數(shù)據(jù)庫
{-Q "query"} --要執(zhí)行的sql命令
{-i input file} --要執(zhí)行的sql文件
{-o output file} --結(jié)果輸出文件
往往在大型系統(tǒng)維護(hù)中,由于存在很多個(gè)節(jié)點(diǎn),比如全省有100多個(gè)縣,每個(gè)縣都有一套相同的系統(tǒng)(系統(tǒng)、數(shù)據(jù)庫結(jié)構(gòu)相同,但數(shù)據(jù)不同),這時(shí)候?qū)?huì)發(fā)現(xiàn)用好iSql命令將非常有用。尤其是在與dos其它命令組合時(shí)。
一、以下演示一個(gè)場(chǎng)景,需要向全省100個(gè)節(jié)點(diǎn)數(shù)據(jù)庫,執(zhí)行一段sql語句,可以是一條update、insert、也可以是一個(gè)存儲(chǔ)過程、甚或是一批sql語句,這個(gè)時(shí)候如果一個(gè)個(gè)節(jié)點(diǎn)去遠(yuǎn)程連接再執(zhí)行,人肯定會(huì)瘋的。利用isql將變得很簡(jiǎn)單:
1.先創(chuàng)建一個(gè)文本文件config.txt,將各節(jié)點(diǎn)的數(shù)據(jù)庫連接參數(shù)寫下來,比如:
192.168.1.1,sa,sa,test
192.168.1.2,sa,sa,test
192.168.1.3,sa,sa,test
192.168.1.4,sa,sa,test
192.168.1.5,sa,sa,test
192.168.1.6,sa,sa,test 2.創(chuàng)建一個(gè)sql文件start.sql,存放您要執(zhí)行的sql代碼(內(nèi)容略)
3.創(chuàng)建一個(gè)批處理,內(nèi)容如下:
- @for /F "eol=# tokens=1,2,3* delims=, " %%i in (config.txt) do (
 - @echo 向服務(wù)器%%i執(zhí)行SQL語句
 - @echo 向服務(wù)器%%i執(zhí)行SQL語句 >> log.txt
 - @isql -S%%i -U%%j -P%%k -d%%l -istart.sql >> log.txt
 - @echo 執(zhí)行結(jié)束
 - pause
 
這段代碼會(huì)逐行分析config.txt中的節(jié)點(diǎn)配置,然后分別執(zhí)行sql文件start.sql,然后將結(jié)果輸出到log.txt中。
二、還有一種情況,同樣需要向100個(gè)節(jié)點(diǎn)執(zhí)行相同的sql語句,不同的是需要返回?cái)?shù)據(jù),進(jìn)行匯總或統(tǒng)計(jì)分析用。比如返回某張表中一共有多少條記錄,那么,也可以建立一個(gè)批處理,如下:
- @for /F "eol=# tokens=1,2,3* delims=, " %%i in (config.txt) do (
 - @echo 向服務(wù)器%%i執(zhí)行SQL語句
 - @echo 向服務(wù)器%%i執(zhí)行SQL語句 >> log.txt
 - @isql -S%%i -U%%j -P%%k -d%%l -Q"select count(*) from tablename" >> log.txt
 - @echo 執(zhí)行結(jié)束
 - pause
 
然后您就可以等著看結(jié)果了。如果有錯(cuò)誤,或者連不上數(shù)據(jù)庫都會(huì)在log.txt中提示,這樣我們就可以查看log.txt來解決問題了。
關(guān)于SQL Server 2000數(shù)據(jù)庫使用的isql命令進(jìn)行批量處理的知識(shí)就介紹到這里了,希望本次的介紹能夠給您帶來一些收獲,謝謝!
【編輯推薦】
 
 
 
 














 
 
 