Как определить, существует ли роль базы данных в SQL Server? - PullRequest
44 голосов
/ 29 июля 2009

Я пытаюсь выяснить, как я могу проверить, существует ли роль базы данных в SQL Server. Я хочу сделать что-то вроде этого:

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

Какую таблицу / proc мне следует использовать здесь?

Ответы [ 2 ]

69 голосов
/ 29 июля 2009
SELECT DATABASE_PRINCIPAL_ID('role')
--or
IF DATABASE_PRINCIPAL_ID('role') IS NULL

USER_ID устарело и может выйти из строя. CREATE ROLE указывает на SQL 2005+, так что все в порядке

23 голосов
/ 29 июля 2009
if not exists (select 1 from sys.database_principals where name='role' and Type = 'R')
begin
CREATE ROLE role
    AUTHORIZATION MyUser;
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...