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






