Как вы проверяете наличие пользователя на SQL Server?
Я хотел бы оставить пользователя на SQL Server script, но мне нужно сначала проверить наличие, или я получу ошибки script. При отбрасывании таблиц или сохраненных procs я проверяю таблицу sysobjects следующим образом:
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[up_SetMedOptions]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
Drop Procedure up_SetMedOptions;
GO
Что является следствием для проверки пользователя? Обратите внимание, что я НЕ спрашиваю о входе в базу данных на сервере! Вопрос относится к пользователю в конкретной базе данных.
Ответы
Ответ 1
SSMS создает скрипты следующим образом:
Для SQL 2005/2008:
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'username')
DROP USER [username]
Для SQL 2000:
IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'username')
EXEC dbo.sp_revokedbaccess N'username'
Ответ 2
В SQL 2005:
select * from sys.sysusers
В SQL 2000:
select * from sysusers
Ответ 3
Следующий код работал у меня.
IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'MyUserName')
DROP LOGIN [MyUserName]