Como você testar para a existência de um usuário no SQL Server?
-
21-08-2019 - |
Pergunta
Eu gostaria de deixar cair um usuário em um script SQL Server, mas eu vou ter de testar a existência de primeiro ou vou receber erros de script. Ao deixar cair tabelas ou procedimentos armazenados, eu verificar a tabela sysobjects assim:
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[up_SetMedOptions]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
Drop Procedure up_SetMedOptions;
GO
O que é o corolário para a verificação de um usuário? Note que eu não estou perguntando sobre um login de banco de dados para o servidor! A questão diz respeito a um usuário em um banco de dados específico.
Solução
SSMS scripts de TI da seguinte maneira:
Para o SQL 2005/2008:
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'username')
DROP USER [username]
Para o SQL 2000:
IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'username')
EXEC dbo.sp_revokedbaccess N'username'
Outras dicas
No SQL 2005:
select * from sys.sysusers
No SQL 2000:
select * from sysusers
O código a seguir trabalhou para mim.
IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'MyUserName')
DROP LOGIN [MyUserName]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow