22

我想在 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

检查用户的推论是什么?请注意,我不是在询问服务器的数据库登录!该问题与特定数据库中的用户有关。

4

3 回答 3

33

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'
于 2008-12-10T13:25:54.833 回答
2

在 SQL 2005 中:

select * from sys.sysusers

在 SQL 2000 中:

select * from sysusers
于 2008-12-10T13:22:58.430 回答
-1

下面的代码对我有用。

IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'MyUserName') 
DROP LOGIN [MyUserName]
于 2013-11-03T23:59:56.380 回答