域组作为单一登录,但仍然有许多不同的数据库用户?

SQL*_*ice 6 sql-server-2008 sql-server sql-server-2008-r2

我们希望在 Active Directory 中的 SQL Server 2008 上使用 Windows 身份验证。

是否可以将 AD 组用作服务器的登录名,然后将实际的 AD 用户映射到数据库用户?

其想法是拥有一个具有基本登录访问权限的 AD 组,然后将角色和访问权限细化到单个数据库用户列表。

我们还使用行级安全性,这样每个用户都可以访问一个国家。

Ken*_*her 5

首先,你想要的方式不会真正奏效。一个数据库上不能有一个登录名和多个用户。如果您尝试,您会收到以下错误:

Msg 15063, Level 16, State 1, Line 1
The login already has an account under a different user name.
Run Code Online (Sandbox Code Playgroud)

您真正应该做的是创建通用组并为其创建登录名和用户。这将为每个人提供基本权限。接下来为您要处理的每个国家/地区创建一个 AD 组。将您的个人添加到这些组中。然后为这些组创建登录名和用户,为他们提供所需的个人访问权限。

这样做的好处是,如果有人离开公司,您所要做的就是将他们从 AD 组中移出并让其他人加入。或者如果必须向某个国家/地区添加第二个人(或更多人),这是微不足道的事情。

编辑:例如:

  • AD 组:域\销售

    • 用户:鲍勃和乔
  • AD 组:DOMAIN\Sales_US

    • 用户:鲍勃
  • AD 组:DOMAIN\Sales_Canada

    • 用户:乔

所有三个组都创建了 SQL 登录名 所有三个组都在 Sales 数据库上创建了一个用户。

DOMAIN\Sales 组被授予对表 Inventory 和 InventoryPricing 的 SELECT 访问权限 DOMAIN\Sales_US 组被授予对视图 vw_Sales_US 的选择权限并在存储过程 usp_Add_US_Sale 和 usp_Edit_US_Sale 上执行在存储过程 usp_Add_Canada_Sale 和 usp_Edit_Canada_Sale 上执行

这使 Bob 可以访问美国信息和共享信息,而 Joe 可以访问加拿大信息和共享信息。

后来,Mary 取代了 Bob 在美国的销售,由于加拿大的销售额急剧增加,Bob 加入了 Joe 的加拿大销售。

唯一需要进行的更改是从 DOMAIN\Sales_US 中删除 Bob 并添加 Mary 并将 Bob 添加到 DOMAIN\Sales_Canada