19

Ich möchte einen Benutzer in einem SQL Server-Skript löschen, aber ich muss zuerst Existenz testen oder ich werde Skriptfehler erhalten. Wenn Tabellen oder gespeicherte Procs fallen, überprüfe ich die sysobjects Tabelle wie folgt:Wie testen Sie auf die Existenz eines Benutzers in 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 

Was die logische Folge für einen Benutzer zur Überprüfung ist? Beachten Sie, dass ich NICHT nach einer Datenbankanmeldung auf dem Server frage! Die Frage bezieht sich auf einen Benutzer in einer bestimmten Datenbank.

Antwort

32

SSMS Skripte es auf folgende Weise:

Für SQL 2005/2008:

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

Für SQL 2000:

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

In SQL 2005:

select * from sys.sysusers 

In SQL 2000:

select * from sysusers 
-1

Der folgende Code funktionierte für mich.

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

Die Frage speziell sagt "Ich bin ** NOT ** fragt nach einer Datenbank ** Login ** auf dem Server". Ihre Lösung wird eine ** Anmeldung ** entfernen und eine verwaiste Datenbank ** Benutzer ** hinterlassen. –

Verwandte Themen