Как создать таблицу разрешений, предоставленных таблицам базы данных для пользователя базы данных?
-
03-07-2019 - |
Вопрос
У меня есть база данных SQL Server 2000 с несколькими сотнями таблиц. Существует несколько учетных записей пользователей SQL, которые могут обращаться к этой базе данных, но у каждой из них есть разные разрешения, предоставляемые для таблиц в БД. Р>
Как мне создать скрипт, который предоставит мне отчет о разрешениях, предоставленных конкретному пользователю. т.е. чтобы сгенерировать что-то вроде:
Table SELECT DELETE UPDATE INSERT ALTER
----- ------ ------ ------ ------ -----
Invoices Yes No Yes Yes No
Orders Yes Yes Yes Yes No
Customers Yes No Yes Yes No
и так далее. Сегодня пятница, у меня сегодня не хватает SQL-фу, и у меня есть еще миллион дел, прежде чем закончить здесь сегодня, и если у кого-то уже есть удобный скрипт для этого, я был бы вечно благодарен:)
Решение
Select TABLE_NAME, PRIVILEGE_TYPE
from INFORMATION_SCHEMA.TABLE_PRIVILEGES
where GRANTEE = @username
Это будет работать в SQL Server 2000/2005/2008
Другие советы
Я не уверен, работает ли эта процедура для SQL 2000 или нет, она не получает точный формат, но может помочь вам в этом, можете ли вы повернуть ее, чтобы получить свой формат. р>
sys.sp_helprotect @Username = 'myUser'