2012-07-11 65 views
3

我正在嘗試建立一個平穩的部署過程,我們可以使用單個部署腳本將其部署到生產或開發SQL服務器。如何在開發和生產之間管理SQL權限?

但我不知道如何最好地管理這兩種環境之間的用戶和權限。例如,在開發中,我們希望開發人員組具有db_owner數據庫角色。在製作時,我們要麼不需要訪問,要麼只需要datareader角色。

我認爲最簡單的方法是在每臺服務器上設置一次用戶,然後不要將它們保存在數據庫項目中。但隨後在部署期間它們會丟失。

有什麼辦法可以在Visual Studio中使用項目配置來做到這一點?

我們使用一個完整的Microsoft堆棧

  • Visual Studio 2010的數據庫項目
  • SQL Server 2008中
  • TFS版本控制和構建服務器
  • vsdbcmd部署

回答

2

幾件事情使這更容易:

  1. 在包含角色應具有的權限的數據庫中創建有意義的角色名稱。例如「開發」或「生產支持」。只爲這些角色和用戶分配權限
  2. 在您的項目中,您可能會針對不同的環境使用不同的部署配置。由於每個配置都可以使用不同的sqlcmdvars文件,請爲您的環境創建一個SQLCMD變量併爲其設置適當的值(例如,「DEV」用於開發,「PROD」用於生產)
  3. 創建一個部署後腳本基於SQLCMD變量值的正確環境的正確選擇。喜歡的東西:

-

if ('$(Environment)' = 'DEV') 
begin 
    create user [domain\developers] 
    exec sp_addrolemember @rolename='db_owner', @membername='domain\developers' 
end 
+0

確保如果你正在運行與多個腳本:你有GO語句在腳本中的R語法。如果你不這樣做,它不會正確執行。 – 2012-08-21 18:52:30

相關問題