删除loginname之类的所有登录名

时间:2011-06-06 15:37:18

标签: tsql sql-server-2008

我希望使用每个登录名称与特定模式匹配的脚本从数据库中批量删除用户。使用TSQL的最佳方法是什么?

DELETE syslogins WHERE....不起作用

尝试直接从syslogins删除将返回“不允许对系统目录进行即席更新”

2 个答案:

答案 0 :(得分:5)

这个查询如何创建TSQL语句?然后将此SQL复制到新查询和执行。

select 'drop login [' + name + '];'
from sys.server_principals 
WHERE name like 'foo%'

这基本上是从SSMS删除/删除登录时将创建并运行的脚本。

答案 1 :(得分:1)

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