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_AGGEXEC

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 如何设置远程登录同时多用户登录

Sql Server 的sa用户被禁用

dremio sql server 链接问题

Windows Server 2016 桌面环境的自动配置脚本

仅使用脚本在 MS SQL Server 之间移动多个表

如何通过脚本在 Ubuntu 中禁用 media_automount_open