2016-01-29 133 views
0

我有一個用戶需要只讀訪問數據庫中有限的一組表。當我從他們的屬性中刪除db_owner時,對數據庫的訪問就會消失。同一用戶可以在服務器上的另外兩個表上讀/寫。如何將有限的數據庫設置爲正確的權限?SQL如何設置權限

+0

這應該工作? @ alcor8 – DominicEU

+0

SQL Server 2012 – alcor8

+0

請檢查我的修訂答案。 – DominicEU

回答

1

您需要將用戶添加到db_datareader角色。您可以通過以下兩種方式之一完成此操作,通過management studio,或者您可以執行此類操作。

exec sp_addrolemember 'db_datareader',alcor8 
+0

=================================== 數據庫XXXXXX不可訪問。 (ObjectExplorer) ------------------------------ 程序位置: at Microsoft.SqlServer.Management.UI。 VSIntegration.ObjectExplorer.DatabaseNavigableItem.get_CanGetChildren() 在Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest請求) 在Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle的quitEvent ) – alcor8

+0

你使用''sa'''帳戶嗎?你確定你試圖授予權限的用戶有權限嗎? – DominicEU

+0

想通了。使用db_reader離開db_owner,並拒絕所有不需要的表上選擇工作。 – alcor8

0

嘗試使用此GRANT SELECT on [databasename].* TO '[name]';

如果遇到問題,請張貼在評論

您正在使用什麼版本的SQL Server
+0

嘗試了這一點,但是我無法打開數據庫,在管理員登錄名的首選項下刪除成員資格頁面上的db_owner。在用戶擁有一個框而不是對db_owner進行檢查的擁有模式頁面上。不確定那是什麼意思。 – alcor8

+0

看狗不回答問題:P –