在 SQL Server Management Studio 中,当我右键单击数据库并单击属性时,将打开一个窗口,显示用户对数据库的权限。我最近将一个用户添加到 Active Directory,目的是授予该用户对我的数据库的权限。问题是,在 Active Directory 中,我看到很多用户,但在 SQL Server Management Studio 中,我只看到其中的极少数用户。当我点击搜索->浏览或搜索确切名称时,我刚刚创建的用户不会显示出来。我做错了什么?SQL Server 难道不能连接到 Active Directory 来获取用户列表吗?此外,似乎显示的所有用户都来自 AD 中的一个组...
编辑
只是想感谢大家的回答......
答案和解决方案的总结
用户需要先添加到主“安全”->“登录”文件夹,然后他们才会出现在特定数据库的“属性”->“权限”->“用户”列表中。但是,由于我对 SQL Server 本身没有足够的权限,因此当我转到主登录文件夹时,我无法看到用户(尽管我的同事有更多权限)。但由于我对数据库有足够的权限,因此我可以在那里看到用户,这让我感到困惑。
答案1
您需要先将他们的 Windows 帐户添加到 SQL Server 实例。转到实例的安全文件夹,而不是数据库。在那里添加您想要的新登录用户。将他们添加到 SQL Server 实例后,您可以为他们分配对各个数据库的权限。
答案2
您指的是数据库用户还是 SQL 登录?数据库用户基于 SQL 登录,需要先创建该登录。添加 SQL 登录时,您可以选择使用 Windows 身份验证或 SQL 身份验证。如果选择 Windows 身份验证,则可以浏览本地用户或组帐户或域用户或组帐户。创建登录后,您可以授予该登录对数据库的访问权限,这将在数据库中创建用户。
用户和登录名不会自动出现,还必须被创建。
答案3
基本上,您应该做的是将 ADuser 添加为 SQL Server 登录名(以便他能够通过服务器的身份验证),并在数据库中创建与该登录名关联的用户,并授予该用户在您的数据库上执行操作(读取、写入、更新等)的权限(授权)。您可以使用以下代码实现此目的:
USE [master]
GO
CREATE LOGIN [Domain\User] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE [YourTargetDatabase]
GO
CREATE USER [Domain\User] FOR LOGIN [Domain\User]
GO
USE [YourTargetDatabase]
GO
EXEC sp_addrolemember N'db_datareader', N'Domain\User'
GO
USE [YourTargetDatabase]
GO
EXEC sp_addrolemember N'db_datawriter', N'Domain\User'
GO
有时,您可能会看到未与任何登录关联的用户,这是因为另一台服务器中的数据库可能在此处恢复,或者删除了登录而没有删除关联的用户。