我有一个.net应用程序,该应用程序使用Windows身份验证连接到SQL Server。
我们无法在应用程序中使用SQL Server身份验证。我们的项目中有很多Active Directory用户。因此,我们必须为SQL Server中的每个Active Directory用户创建一个单独的登录帐户,而不是为每个AD用户创建一个单独的登录帐户,是否可以使用SQL Server中的Active Directory用户组?
我有一个.net应用程序,该应用程序使用Windows身份验证连接到SQL Server。
我们无法在应用程序中使用SQL Server身份验证。我们的项目中有很多Active Directory用户。因此,我们必须为SQL Server中的每个Active Directory用户创建一个单独的登录帐户,而不是为每个AD用户创建一个单独的登录帐户,是否可以使用SQL Server中的Active Directory用户组?
Answers:
在SQL Server Management Studio中,转到Object Explorer > (your server) > Security > Logins
并右键单击New Login
:
然后在弹出的对话框中,选择要查看的对象类型(Groups
默认情况下处于禁用状态-选中它!),然后选择要查找对象的位置(例如使用Entire Directory
),然后找到广告组。
现在,您具有常规的SQL Server登录名-就像为单个AD用户创建登录名一样。给该新登录名所需的数据库权限,然后就可以使用!
该AD组的任何成员现在都可以登录SQL Server并使用您的数据库。
您可以使用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登录名?
CREATE LOGIN ... WITH DEFAULT_SCHEMA
,点 ...
必须引用某个广告组。我们有几个组,并且希望为活动目录组accountants
提供对模式“ A”的访问,但不能对模式“ B”和“ C”进行访问。同样,“帐单”组只能访问模式“ B”。作为前端,我们使用msft访问。
转到SQL Server Management Studio,导航到“安全性”,再转到“登录名”,然后右键单击它。菜单上会显示一个按钮,显示“新登录”。在那里,您将能够将Active Directory中的用户和/或组添加到SQL Server“权限”中。希望这可以帮助