繁体   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