SQL Server 2008: как определить разрешение на создание новой базы данных? - PullRequest
1 голос
/ 19 ноября 2010

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

Я пробовал это:

WITH perms AS
( SELECT DISTINCT permission_name AS perm
FROM [sys].[server_permissions]
WHERE permission_name IN
('CONTROL SERVER', 'ALTER ANY DATABASE', 'CREATE ANY DATABASE')
UNION
SELECT DISTINCT permission_name
FROM [sys].[database_permissions]
WHERE permission_name IN
('CREATE DATABASE', 'ALTER DATABASE')
)
SELECT COUNT(perm) AS Permissions FROM perms

потому что на странице MSDN эти разрешения указаны в документации Создать базу данных . Это не работает, потому что у меня есть пользователь в роли dbcreator, и для его пользователя ни одно из разрешений не указано.

Так что мне нужен надежный способ определения необходимых разрешений с использованием SQL. Вы можете мне помочь?

1 Ответ

1 голос
/ 19 ноября 2010

Вы пробовали это вместо запроса?

select * from sys.fn_my_permissions('','')
...