如何确定SQL Server中是否存在数据库角色?

时间:2009-07-29 15:35:37

标签: sql sql-server

我正在试图弄清楚如何检查SQL Server中是否存在数据库角色。我想做这样的事情:

if not exists (select 1 from sometable where rolename='role')
begin
CREATE ROLE role
    AUTHORIZATION MyUser;
end

我应该在这里使用什么表/ proc?

2 个答案:

答案 0 :(得分:68)

SELECT DATABASE_PRINCIPAL_ID('role')
--or
IF DATABASE_PRINCIPAL_ID('role') IS NULL

USER_ID已被弃用,可能会中断。 CREATE ROLE表示SQL 2005+,所以没关系

答案 1 :(得分:23)

if not exists (select 1 from sys.database_principals where name='role' and Type = 'R')
begin
CREATE ROLE role
    AUTHORIZATION MyUser;
end