我有这个查询来构建我的 drop login 语句。作为第二部分,我想执行这个输出。理想情况下,我想通过两个步骤(生成和执行)在 sql 作业中执行此操作。这能做到吗?
SELECT 'DROP LOGIN [' + name + ']'
FROM [master].[dbo].[syslogins]
WHERE isntgroup = 0
AND isntuser = 0
AND sysadmin = 0
AND name != 'sa'
AND name NOT LIKE '##%'
ORDER BY name
Run Code Online (Sandbox Code Playgroud)
您可以做的是将查询的输出设置为连接字符串变量。类似于以下内容:
declare @sql_command varchar(max);
set @sql_command = '';
SELECT @sql_command += 'DROP LOGIN [' + name + ']' + char(13)
FROM [master].[dbo].[syslogins]
WHERE isntgroup = 0
AND isntuser = 0
AND sysadmin = 0
AND name != 'sa'
AND name NOT LIKE '##%'
ORDER BY name
print @sql_command;
-- exec (@sql_command);
Run Code Online (Sandbox Code Playgroud)
该PRINT
会告诉你你的命令,我已经注释掉EXEC
但会运行生成的SQL。请注意,您必须取消EXEC
对实际发生的任何事情的注释(事先要小心,并确保这是您正在寻找的行为)。
至于生成的一个步骤和执行的另一个步骤,我不太确定这样做会带来什么。听起来您并没有给自己时间在执行之前“审查” drop 语句。但是,无论哪种方式,您都可以在一个步骤中将语句存储在表中,然后DROP LOGIN
如果您愿意的话,可以在后续步骤中执行最近生成的命令。那将是满足该要求的一种方式。
我意识到您可能需要执行上述任务,但请注意,您要求创建 SQL Server 代理作业来执行一些不那么常规的操作,例如删除服务器主体。这可能需要了解为什么实际上有要求,并在需要重复发生的基础上快速删除登录的情况下进行处理。再次,只是需要考虑的事情。
归档时间: |
|
查看次数: |
6242 次 |
最近记录: |