19

Я хотел бы бросить пользователя в сценарии SQL Server, но сначала мне нужно будет проверить существование, или я получу ошибки скрипта. При отбрасывании таблицы или сохраненные проки, проверить таблицу sysobjects так:Как вы проверяете наличие пользователя на SQL Server?

IF EXISTS (
    SELECT * 
    FROM sysobjects 
    WHERE id = object_id(N'[dbo].[up_SetMedOptions]') 
    AND OBJECTPROPERTY(id, N'IsProcedure') = 1 
) 
Drop Procedure up_SetMedOptions; 
GO 

Что является следствием проверки для пользователя? Обратите внимание, что я НЕ спрашиваю о входе в базу данных на сервере! Вопрос относится к пользователю в конкретной базе данных.

ответ

32

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 Server 2005:

select * from sys.sysusers 

В SQL Server 2000:

select * from sysusers 
-1

Код ниже работал для меня.

IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'MyUserName') 
DROP LOGIN [MyUserName] 
+3

Вопрос конкретно говорит: «Я ** НЕ ** спрашиваю о базе данных ** login ** на сервере». Ваше решение удалит ** login ** и оставит без поддержки пользователя ** **. – 2014-11-13 13:52:02