Tsql 删除loginname喜欢的所有登录名
我希望使用脚本从数据库中批量删除用户,每个登录名都与特定模式匹配。使用TSQL实现这一点的最佳方法是什么Tsql 删除loginname喜欢的所有登录名,tsql,sql-server-2008,Tsql,Sql Server 2008,我希望使用脚本从数据库中批量删除用户,每个登录名都与特定模式匹配。使用TSQL实现这一点的最佳方法是什么 删除不起作用的系统登录 尝试直接从系统登录中删除将返回“不允许对系统目录进行临时更新”如何使用此查询创建TSQL语句?然后将此SQL复制到新的查询和exec中 select 'drop login [' + name + '];' from sys.server_principals WHERE name like 'foo%' 这基本上就是从SSMS中删除/删除登录名时将创建和运行的脚
删除不起作用的系统登录
尝试直接从系统登录中删除将返回“不允许对系统目录进行临时更新”如何使用此查询创建TSQL语句?然后将此SQL复制到新的查询和exec中
select 'drop login [' + name + '];'
from sys.server_principals
WHERE name like 'foo%'
这基本上就是从SSMS中删除/删除登录名时将创建和运行的脚本。谢谢。如果没有更好的办法,我就这样做。我希望避免循环,但如果一次只能做一个,那就是我要做的。
USE MyDatabase
DECLARE @LoginName sysname
DECLARE @SQL NVARCHAR(1000)
DECLARE DBLOGINS CURSOR FOR
SELECT name FROM sys.database_principals
WHERE name LIKE 'some_pattern%'
OPEN DBLOGINS
FETCH NEXT FROM DBLOGINS INTO @LoginName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'DROP LOGIN [' + @LoginName + ']'
EXEC sp_executesql @SQL
FETCH NEXT FROM DBLOGINS INTO @LoginName
END
CLOSE DBLOGINS
DEALLOCATE DBLOGINS