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

StackOverflow https://stackoverflow.com/questions/212681

  •  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'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top