我正在试图弄清楚如何检查SQL Server中是否存在数据库角色。我想做这样的事情:
if not exists (select 1 from sometable where rolename='role')
begin
CREATE ROLE role
AUTHORIZATION MyUser;
end
我应该在这里使用什么表/ proc?
答案 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