在SQL Server 2008中禁用数据库用户而不是登录用户

13

为了在 SQL Server 2008 中禁用数据库用户,我执行了以下命令:

Use Database
Go
Revoke Connect from username;

它适用于使用SQL Server身份验证的用户,如abcdef

但不适用于使用Windows身份验证的用户,如DomainName\abcdef。它会报错:

Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '\'.

即使在上述命令中使用单引号也无法正常工作。

请提供建议。

2个回答

18

当我在用户名周围使用双引号时,它就有效了,例如:

USE Database
GO
REVOKE CONNECT FROM "domain\user"

为了让数据库的用户能够:

USE Database
GO
GRANT CONNECT TO "username"
禁用服务器的登录:

禁用服务器的登录:

USE master
GO
ALTER LOGIN loginname DISABLE;

启用服务器的登录:

USE master
GO
ALTER LOGIN loginname ENABLE;

2
那可能需要 QUOTED_IDENTIFIER ON。使用 SQL Server 方括号 [像这样] 的引号已经可以工作,而不需要这个设置。 - underscore_d

0

我使用sys.sysusers DMV来识别被禁用的用户。

您可以在以下示例中看到查询结果,并在ssms中进一步导航。

select * from sys.sysusers 
where islogin =1
  and hasdbaccess = 0

enter image description here

enter image description here


2
问题是如何禁用Windows身份验证用户,而不是如何识别已禁用的用户。 - underscore_d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接