Права на хранимки и функции в MSSQL

В проектах нужно раздавать права на хранимки, функции и, достаточно редко, представления, которые мы создаем для обычного серого рядового пользователя.

Всем известно, делать в MSSQL это нужно как-то так:

GRANT EXEC ON объект> TO PUBLIC -- для объектов, возвращающих скалярное значение
или
GRANT SELECT ON объект> TO PUBLIC -- для объектов, возвращающих набор данных

А вот чтобы посмотреть на какие из хранимок или функций права еще не розданы, можно выполнить вот такой запрос:

SELECT
Object.Name AS Object,
Grantee.Name AS Grantee
FROM sysobjects Object
LEFT JOIN syspermissions P ON P.id = Object.id
        LEFT JOIN sysusers Grantee ON P.Grantee = Grantee.UID
WHERE
Object.xtype IN ('P', 'FB', 'TF', 'FN')
AND Grantee.UID IS NULL

Для представлений нужно в список типов объектов добавить еще 'V' в предпоследнюю строчку.

Естественно раздавать права нужно лишь на свои хранимки и ф-ии, а не те, что предустановлены в базовой версии.

З.Ы. Может есть уже известный подход к этой проблеме, а я тут Америку открываю? Короче, пишите.

Нравится

Поделиться

0 комментариев
Показать все комментарии