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