![](/img/trans.png)
[英]Finding Active Directory Group/Roles Assigned on Multiple SQL Servers
[英]How to retrieve SQL Server database roles for an Active Directory domain group
我有以下環境:
在Microsoft Windows NT 6.1(7601)上運行的Microsoft SQL Server Enterprise 64位版本11.0.5623.0
我有一個名為MyDomain的域,所有最終用戶都是該域的成員,例如,來自美國的用戶Donald和來自德國的用戶Fritz
對於每個國家/地區,我都有一個專用的域組,例如MyDomain_Sales_USA組包含美國用戶Donald, MyDomain_Sales_GER包含德國用戶Fritz
我在具有Sales
數據庫的MyDomain
有一個SQL Server實例。
Sales
數據庫包含一個名為Products
的表,如下所示:
最終用戶使用其域帳戶(單點登錄)訪問“ Products
表以讀取數據
業務案例:
Country = USA
用戶只能看到Country = USA
的產品,類似地,德國用戶也只能看到Germany產品。 我的方法:
使用SQL Server Management Studio,我將域組MyDomain_Sales_USA和MyDomain_Sales_GER添加到SQL Server Security \\ Logins節點,並將每個組映射到Sales數據庫。
我在Sales
數據庫中創建了兩個數據庫角色SalesRole_USA
和SalesRole_GER
。 使用數據庫角色屬性對話框,將MyDomain_Sales_USA
作為成員添加到SalesRole_USA
角色中,並將MyDomain_Sales_GER
到SalesRole_GER
角色中
我使用以下選擇語句在產品數據庫中創建了一個視圖
SELECT * FROM Products WHERE Country = GetCurrentUserCountry()
這是我的問題:
如何在GetCurrentUserCountry()
函數中確定連接的用戶屬於哪個數據庫角色?
換句話說:如果唐納德執行上述select語句,則該函數必須返回“美國”,如果弗里茨執行該語句,則該函數必須返回“ GER”
我的期望如下:
SQL Server授予對Donald和Fritz的訪問權限,因為它們的域組已注冊並映射到Sales
數據庫
因此,必須有可能為連接的用戶檢索數據庫角色
在GetCurrentUserCountry()函數中,我使用了系統函數IS_MEMBER('MyDomain_Sales_USA')和IS_MEMBER('MyDomain_Sales_GER'),這很好,但有一個小缺點,因為每次創建新的國家/地區組時都必須更新該函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.