В проектах нужно раздавать права на хранимки, функции и, достаточно редко, представления, которые мы создаем для обычного серого рядового пользователя.
Всем известно, делать в MSSQL это нужно как-то так:
GRANT EXEC ON объект> TO PUBLIC -- для объектов, возвращающих скалярное значение
или
GRANT SELECT 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
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' в предпоследнюю строчку.
Естественно раздавать права нужно лишь на свои хранимки и ф-ии, а не те, что предустановлены в базовой версии.
З.Ы. Может есть уже известный подход к этой проблеме, а я тут Америку открываю? Короче, пишите.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать