19

Me gustaría dejar caer a un usuario en un script de SQL Server, pero tendré que probar primero la existencia o obtendré errores de script. Cuando eliminar tablas o procedimientos almacenados, puedo comprobar la tabla sysobjects así:¿Cómo se prueba la existencia de un usuario en 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 

¿Cuál es el corolario de la comprobación de un usuario? Tenga en cuenta que NO estoy preguntando sobre el inicio de sesión de una base de datos en el servidor. La pregunta pertenece a un usuario en una base de datos específica.

Respuesta

32

SSMS secuencias de comandos de la siguiente manera:

Para SQL 2005/2008:

IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'username') 
DROP USER [username] 

para SQL 2000:

IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'username') 
EXEC dbo.sp_revokedbaccess N'username' 
2

En SQL 2005:

select * from sys.sysusers 

En SQL 2000:

select * from sysusers 
-1

El código siguiente funcionó para mí.

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

La pregunta dice específicamente "NO ESTOY ** preguntando por una base de datos ** de inicio de sesión ** en el servidor". Su solución eliminará ** un inicio de sesión ** y dejará una base de datos huérfana ** usuario **. –

Cuestiones relacionadas