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

相关问题