SQL Server:如何通过脚本同时禁用多个登录
Posted
技术标签:
【中文标题】SQL Server:如何通过脚本同时禁用多个登录【英文标题】:SQL Server: how to disable several Logins simultaneously via Script 【发布时间】:2021-04-26 13:29:54 【问题描述】:我在 SQL Server 中有多个用户登录(SQL Server 和 Windows),必须禁用它们。
要禁用 1 登录,我会使用
ALTER LOGIN [AD\001] DISABLE
手动使用属性/设置需要很长时间。禁用多个登录的脚本是什么样的?
例如,我可以使用 WHERE 和 LIKE,因为大多数登录都以“AD”开头。
例如
ALTER LOGIN DISABLE
WHERE Login LIKE "%AD\"
【问题讨论】:
无法一一发布多个ALTER LOGIN
指令。您可以查询 DMV 以提取登录信息并构建动态 SQL 以传递给 EXEC
作为替代方案。
循环登录被禁用并执行 ALTER 命令。
【参考方案1】:
您需要动态构建一个脚本来执行此操作。
SELECT N'ALTER LOGIN ' + QUOTENAME(sp.name) + N' DISABLE;'
FROM sys.server_principals sp
WHERE sp.type IN ('S','U','G','E','X')
AND sp.name LIKE LIKE N'%AD\';
'S','U','G','E','X'
代表不同的登录类型,see the docs。
要以编程方式执行,您可以使用STRING_AGG
和EXEC
:
DECLARE @sql nvarchar(max) = (
SELECT STRING_AGG(
CAST(N'ALTER LOGIN ' + QUOTENAME(sp.name) + N' DISABLE;' AS nvarchar(max)), N'
')
FROM sys.server_principals sp
WHERE sp.type IN ('S','U','G','E','X')
AND sp.name LIKE LIKE N'%AD\'
);
EXEC (@sql);
【讨论】:
以上是关于SQL Server:如何通过脚本同时禁用多个登录的主要内容,如果未能解决你的问题,请参考以下文章
windows server 2012 如何设置远程登录同时多用户登录