2015-06-09 25 views
0

我想本地發佈一個SQLExpress實例來測試VS數據庫項目的發佈功能,我遇到了一個錯誤,它試圖創建一個已經存在於數據庫中的用戶該用戶創建未被的IF內包裹EXISTS和我沒有看到任何類型的設置來控制或執行本的VS數據庫項目用戶創建錯誤

具體地,它拋出: 創建[XYZ \ abc46518] ... ( 208,1):SQL72014:.Net SqlClient數據提供程序:消息15063,級別16,狀態1,行1已登錄的用戶名稱不同。執行腳本: CREATE USER [xyz \ abc46518] FOR LOGIN [xyz \ abc46518];

雖然腳本的其他部分有'IF EXISTS'和'IF NOT EXISTS',但這部分腳本沒有。

我希望能夠將此作爲腳本的一部分來控制數據庫中的用戶。如果有人選擇授予訪問權限並且不在源代碼中,則在部署時它將消失。

+0

我們放棄了原生的「用戶」支持,並推出了我們自己的產品,這在很大程度上取決於Jamie Thomson的一些工作。這將所有權限和用戶置於部署後腳本中。 http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html –

+0

你可以把'IF NOT EXISTS'放在用戶腳本中嗎? – Keith

回答

0

我開始使用數據庫項目,它們很棒,除了用戶權限。 我只對我們的數據庫擁有dba權限,而處理登錄位於服務器級別。

所以創建數據庫項目時,我會得到生成以下代碼:

CREATE USER [用戶名]登錄

,當我去構建項目會出錯。

嗯,我想要用戶,但不希望跟蹤部署後腳本的麻煩,很大程度上是因爲他們毀了我可愛的TFS結構。

我的解決辦法,這是不是創建一個用戶一個黑客位的,我只是創建了同名的角色:

CREATE ROLE [用戶名] 授權[DBO]

現在我可以將權限分配給用戶的我的對象(我知道所有的訪問應該是通過角色,但它不是我的數據庫,所以我很高興能破解修復)

我們從來沒有部署自己的角色,所以我們開發它的角色或用戶並不重要。