我還在爲此苦苦掙扎,但我記得當時注意到msdeploy.exe也能夠用變量執行sql腳本。但是,出於某種奇怪的原因,msdeploy.exe能夠將來自命令行的變量與命令行中的變量值進行比較,優先於腳本本身中定義的值。
一個例子: 我有一個SQL腳本(NavDbSecurity.sql),其具有定義了三個參數:
:setvar loginName "testLoginName"
:setvar databaseName "testDatabaseName"
:setvar NavCompanyName "blablabla"
當我執行以下msdeploy腳本中,參數值I通過命令行的優先級高於在腳本文件中定義的值(不介意沒有密碼sa用戶;)):
msdeploy.exe -verb:sync -source:dbfullsql="c:\NavDbSecurity.sql" -dest:dbfullsql="data source=.\sqlexpress;initial catalog=data base;User Id=sa;Password=;",transacted=False -setParam:kind=SqlCommandVariable,scope="NavDbSecurity.sql",match=databaseName,value="[data base]" -setParam:kind=SqlCommandVariable,scope="NavDbSecurity.sql",match=loginName,value="domain\user" -setParam:kind=SqlCommandVariable,scope="NavDbSecurity.sql",match=NavCompanyName,value="testCompany"
這很爛!謝謝 – VirtualStaticVoid 2009-05-07 11:19:05
真的很糟糕!我注意到,Microsoft Connect上的建議於2008年打開,並且仍處於活動狀態。呃,無論如何我都投了贊成票,雖然我的希望不是很高。 – 2011-02-09 15:57:55
http://www.codeproject.com/Articles/1019661/Powershell-Scripts-to-Replace-setvar-Variable-in-S – Kody 2016-03-14 18:25:57