Извлечь разрешения таблицы из SQL Server 2005 - PullRequest
1 голос
/ 08 февраля 2011

Как вы извлекаете роли пользователей с типом = роль базы данных из разрешения таблицы, чтобы я мог поместить это разрешение в другой сценарий создания таблицы, чтобы новая таблица имела ту же роль пользователя?

1 Ответ

1 голос
/ 08 февраля 2011

Вы можете попробовать что-то вроде этого - проверить представления системного каталога sys.database_permissions и sys.database_principals:

SELECT
    dp.class,
    dp.class_desc,
    dp.permission_name,
    object_name(dp.major_id) 'Database object',
    p.name 'Granted to',
    dp.major_id,
    object_name(dp.major_id),
    dp.minor_id,
    dp.grantee_principal_id,
    dp.type,
    dp.state,
    dp.state_desc
FROM 
    sys.database_permissions AS dp
INNER JOIN 
    sys.database_principals AS p ON dp.grantee_principal_id = p.principal_id
WHERE
    class = 1   -- object-level permissions

Подробнее о sys.database_permissions и sys.database_principals в электронной документации по MSDN SQL Server.

Обновление: , если вы хотите ограничить его одной таблицей, используйте это предложение WHERE:

WHERE
    class = 1   -- object-level permissions
    AND dp.major_id = OBJECT_ID('your-table-name-here')
...