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

在2005年SQL:

select * from sys.sysusers 

在SQL 2000:

select * from sysusers 
-1

下面的代碼適用於我。

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

這個問題特別說「我**不**要求關於數據庫**登錄**到服務器」。您的解決方案將刪除**登錄**並保留一個孤立的數據庫**用戶**。 – 2014-11-13 13:52:02

相關問題