2009-10-20 39 views
0

我正在一臺PC上安裝SQL數據庫和我們的應用程序。在Vista下,這需要由管理員帳戶安裝,但這意味着常規用戶帳戶可以運行我們的程序,但無法訪問它所需的數據庫。SQL爲PC上的所有用戶分配讀/寫訪問權限

我需要的是允許PC上的所有NT登錄訪問數據庫的簡單方法。

我想我已經解決了它:在SSMS中,我可以手動將db_datareader/writer角色分配給BUILTIN \ Users,並且完美地工作。

但是,如果我的安裝程序執行以下,這是行不通的:

USE [OurDatabase] 
GO 
EXEC sp_addrolemember N'db_datawriter', N'BUILTIN\Users' 
GO 
EXEC sp_addrolemember N'db_datareader', N'BUILTIN\Users' 
GO 

得到了用戶指定的角色,但他們仍然無法訪問數據庫。我在SSMSE中看到的唯一差別是,在後一種情況下,他們也獲得了一個新的「BUILTIN \ Users」模式的所有權,我懷疑這可能會讓事情變得糟糕。顯然,SSMS做了一些稍微不同的...

任何人都可以提出一種方法,以編程方式使此工作?

回答

2

在OurDatabase中,什麼用戶被映射到登錄?你看到SSMS方法與編程方法有什麼不同嗎?當工作時,映射到組登錄的用戶的默認模式是

+0

如果我在SSMS中執行它,並要求它從「新用戶」對話框中編寫腳本,它會在我的問題中生成SQL腳本 - 所以我無法在編程方面看到任何差異。在所有情況下,默認模式似乎都是空白的(並且不可編輯)。我在SSMS中看到的唯一區別是,程序添加的用戶擁有一個新的「BUILTIN \ Users」模式,這只是奇蹟般的出現 - 所以我唯一的提示是,也許我需要找到一種方法使它使用更好的默認模式? – 2009-10-20 14:57:44

+0

請參閱我的答案以獲取解決方案的完整說明。但接受亞倫的,因爲它指出我的解決方案。 – 2009-10-20 15:16:26

0

將應用程序設置爲僅在vista上以管理員身份運行怎麼樣?

+0

。應用程序以非升級用戶身份運行,我不希望管理員每次用戶希望運行該程序時都必須到機器上輸入他的密碼! – 2009-10-20 14:52:09

0

啊,看來SSMS還沒有一個 數據庫上創建用戶[BUILTIN \用戶對於登錄[BUILTIN \用戶] 如果用戶不存在。

我在試圖解決該做什麼的同時多次打開和關閉權限,並且在隨後的嘗試中用戶已經存在,所以SSMS不用打擾CREATE命令。所以當我終於弄清楚我需要做什麼時,我得到一個不完整的(根據我的需要)腳本。

這並不明顯,因爲該命令的效果在用戶屬性中沒有看到;它們出現在SSMS的Server Security \ Logins部分中的用戶映射中。

由於阿龍(登錄的提到了我在看安全\登錄頁面,我發現在那裏的映射差)這具體是什麼,我試圖避免

相關問題