命令行中執行 *.sql 的問題 (代參數)

記得在命令行中,利用一些工具程式,可以執行 *.sql 的腳本檔案。
這些工具有 OSQL、SQLCMD,使用範例如下:
osql -S. –U UserID –P 1234 –iRestore_DB03.sql
sqlcmd -S. –U UserID –P "PW" -i Restore_DB03.sql
* 在 Microsoft 相關文件中,提及 OSQL 工具將會在未來被移除,建議要改換 SQLCMD 工具。
近來,工作上的需要,要在 *.sql 的腳本中設定變量,好適用在各種環境中。
不料,卻遇到瓶頸:該如何在 批次用法 中,將參數內容加以代入?
經多方查找後,發現 解決方法:
  1. 需要 SQL 2005 工具:SQLCMD
  2. 批次用例:sqlcmd -S. –U UserID –P "PW" -i test.sql -v cols="count(*)" tablename="trpa00h"
  3. SQL 腳本用例:test.sql 檔案內容
    SET NOCOUNT ON
    Select $(cols) from $(tablename)

沒有留言: