sql-server – 如何测试SQL Server中用户的存在?

我想把一个用户放在SQL Server脚本中,但是我需要先测试一下,否则我会收到脚本错误。当删除表或存储过程时,我检查sysobjects表,如下所示:

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

检查用户的必然结果是什么?请注意,我不是要求数据库登录到服务器!该问题与特定数据库中的用户有关。

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'
http://stackoverflow.com/questions/356000/how-do-you-test-for-the-existence-of-a-user-in-sql-server

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql-server – 如何测试SQL Server中用户的存在?