此刻,我部署到服務器,並部署的一部分,從Visual Studio發佈時,調用腳本,將用戶添加到組:Visual Studio中 - 部署數據庫 - 數據庫參數
ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers];
我使用的服務器稱爲OTWGEODI01
不過,我創建了一個新的發佈配置文件指向OTWGEODI02
- 但上面的腳本失敗,因爲現在有成員OTWGEODI01\GEO Application Developers
有沒有一種方法,我可以甲肝e作爲發佈的一部分,在腳本中更改此值的參數?
我試圖添加屬性到我的數據庫解決方案,但添加一個名爲ServerName的cariable。我將它設置爲'OTWGEODI02'。然後我去到了直接引用服務器名稱我的劇本之一:
ALTER ROLE [geodeveloper] ADD MEMBER [OTWGEODI01\GEO Application Developers];
,取而代之的是:
ALTER ROLE [geodeveloper] ADD MEMBER [[$(ServerName)\GEO Application Developers];
但它告訴我,我有一個無效的語法附近「\」
你能看到我犯的一個錯誤嗎?另外,每次我需要發佈到不同的環境時,我都需要去更新數據庫屬性?或者可以以某種方式基於我正在使用的.publish文件。 (我有一個每個數據庫.publish文件)。也許我可以用一個發佈文件結束,並以某種方式選擇解決方案配置並在那裏添加我的環境?
編輯:
結果在發佈錯誤說:
SQL72014:.net SqlClient數據提供:消息15401,級別16,狀態1, 線1的Windows NT用戶或組「( $ ServerName)\ GEO Application Developers'not found。再次檢查名稱。
CREATE USER [($ServerName)\GEO Application Developers] FOR LOGIN [($ServerName)\GEO Application Developers];
它似乎沒有替換變量...
另外:
CREATE USER [$(ServerName)\GEO Application Developers] FOR LOGIN [$(ServerName)\GEO Application Developers];
結果內置時間錯誤,說我不能把參數在這裏。
謝謝@Amit - 我只是試過,但得到一個奇怪的錯誤。我根據你的回答更新了我的問題。 – Craig
這是在你的代碼中丟失的''''。 – AKS
再次想到,您還可以使用系統變量「@@ SERVERNAME」來獲取服務器名稱。然後你需要建立你的sql查詢並執行它(我認爲是動態查詢)。 – AKS