如何在SQL Server中将Active Directory用户组添加为登录名


108

我有一个.net应用程序,该应用程序使用Windows身份验证连接到SQL Server。

我们无法在应用程序中使用SQL Server身份验证。我们的项目中有很多Active Directory用户。因此,我们必须为SQL Server中的每个Active Directory用户创建一个单独的登录帐户,而不是为每个AD用户创建一个单独的登录帐户,是否可以使用SQL Server中的Active Directory用户组?

Answers:


162

在SQL Server Management Studio中,转到Object Explorer > (your server) > Security > Logins并右键单击New Login

在此处输入图片说明

然后在弹出的对话框中,选择要查看的对象类型(Groups默认情况下处于禁用状态-选中它!),然后选择要查找对象的位置(例如使用Entire Directory),然后找到广告组。

在此处输入图片说明

现在,您具有常规的SQL Server登录名-就像为单个AD用户创建登录名一样。给该新登录名所需的数据库权限,然后就可以使用!

该AD组的任何成员现在都可以登录SQL Server并使用您的数据库。


有没有机会像上面那样在mysql中创建组?
uzay95

2
感谢您使用带注释的屏幕截图给出非常明确的答案!我希望所有答案都是这样...
NickG

1
@NickG:我使用的无Paint.NET加载图像和插入圆形红色矩形
marc_s

7
这对我不起作用。我有一个Windows组“ DataAccess”,“ UserX”是其中的成员。我为DataAccess组创建了一个登录名,并将该登录名的用户映射设置为对数据库具有public,datareader和datawriter访问权限。用户无法登录。如果我专门添加了该用户,并分配了完全相同的映射权限,则他可以登录。单击该组的“安全性”>“有效权限”时,它会显示“无法作为服务器主体执行”因为主体'GroupName'没有退出,所以不能模拟这种主体,或者您没有权限。”
Triynko 2013年

1
@Tim:用户名-仍然是登录的用户-他只是没有直接的权限-作为用户-但是通过成为具有权限的那个组的成员
marc_s

21

您可以使用T-SQL:

use master
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName

我将其用作从生产服务器还原到测试机的一部分:

USE master
GO
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak'
ALTER DATABASE yourDbName SET ONLINE
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO

如果是德语或法语Windows,您将需要使用服务的本地化名称,请参阅如何在非英语Windows上为服务帐户创建SQL Server登录名?


如果您还需要设置数据库级别的登录名/密码,这是我发现有用的另一个答案dba.stackexchange.com/a/2578/60876
Agostino,

我想知道这是否可用于授予某个活动目录组对某个架构的读取访问权限-在伪sql中CREATE LOGIN ... WITH DEFAULT_SCHEMA,点 ... 必须引用某个广告组。我们有几个组,并且希望为活动目录组accountants提供对模式“ A”的访问,但不能对模式“ B”和“ C”进行访问。同样,“帐单”组只能访问模式“ B”。作为前端,我们使用msft访问。
surfmuggle 17-10-27

0

转到SQL Server Management Studio,导航到“安全性”,再转到“登录名”,然后右键单击它。菜单上会显示一个按钮,显示“新登录”。在那里,您将能够将Active Directory中的用户和/或组添加到SQL Server“权限”中。希望这可以帮助


0

这是我的观察。我为组Windows(AD)用户帐户创建了一个登录名(只读),但是该登录名在不同的SQL服务器中表现得异常出色。在SQl服务器中,用户看不到我添加的数据库,我检查了视图定义,并为避免错误229而使数据库执行渗透到master数据库。如果我为用户创建登录名,则不会出现此问题。


可以发表评论而不是使用答案。但是您还不能发表评论。所以不要哈哈^^
Finnmglas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.