Сбросьте все логины, где логин нравится - PullRequest
6 голосов
/ 06 июня 2011

Я ищу массовое удаление пользователей из базы данных с помощью скрипта для каждого входа в систему с именем, соответствующим определенному шаблону. Каков наилучший способ сделать это с помощью TSQL?

DELETE syslogins WHERE.... не работает

Попытка удаления прямо из системных журналов приведет к появлению сообщения «Специальные обновления системных каталогов не разрешены»

Ответы [ 2 ]

5 голосов
/ 06 июня 2011

Как насчет этого запроса для создания ваших операторов TSQL? Затем скопируйте этот SQL в новый запрос и выполните exec.

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

Это в основном сценарий, который будет создан и запущен при удалении / удалении имени входа из SSMS.

1 голос
/ 06 июня 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...