簡體   English   中英

如何為Active Directory域組檢索SQL Server數據庫角色

[英]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表以讀取數據

業務案例:

  • 屬於域組MyDomain_Sales_USA的 Country = USA用戶只能看到Country = USA的產品,類似地,德國用戶也只能看到Germany產品。
  • 經常將用戶添加和刪除兩個域組
  • SQL Server管理員只希望配置域組。 在SQL Server中未配置任何域用戶。

我的方法:

  1. 使用SQL Server Management Studio,我將域組MyDomain_Sales_USAMyDomain_Sales_GER添加到SQL Server Security \\ Logins節點,並將每個組映射到Sales數據庫。

  2. 我在Sales數據庫中創建了兩個數據庫角色SalesRole_USASalesRole_GER 使用數據庫角色屬性對話框,將MyDomain_Sales_USA作為成員添加到SalesRole_USA角色中,並將MyDomain_Sales_GERSalesRole_GER角色中

  3. 我使用以下選擇語句在產品數據庫中創建了一個視圖

     SELECT * FROM Products WHERE Country = GetCurrentUserCountry() 

這是我的問題:

如何在GetCurrentUserCountry()函數中確定連接的用戶屬於哪個數據庫角色?

換句話說:如果唐納德執行上述select語句,則該函數必須返回“美國”,如果弗里茨執行該語句,則該函數必須返回“ GER”

我的期望如下:

  1. SQL Server授予對Donald和Fritz的訪問權限,因為它們的域組已注冊並映射到Sales數據庫

  2. 因此,必須有可能為連接的用戶檢索數據庫角色

在GetCurrentUserCountry()函數中,我使用了系統函數IS_MEMBER('MyDomain_Sales_USA')和IS_MEMBER('MyDomain_Sales_GER'),這很好,但有一個小缺點,因為每次創建新的國家/地區組時都必須更新該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM