Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
SayAdm Member Откуда: Сообщений: 9 |
Здравствуйте, Друзья Подскажите плз, как на tsql получить список всех прав которые выданы на таблицу ? |
20 апр 16, 12:31 [19081822] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
SayAdm, за что вы так ненавидите гугл? |
20 апр 16, 12:48 [19081983] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11562 |
select pe.permission_name, pe.state, pr.name from sys.database_permissions pe join sys.database_principals pr on pe.grantee_principal_id = pr.principal_id where pe.class = 1 and pe.major_id = object_id('Table1') and pe.minor_id = 0; это только implicit permissions. ещё нужно смотреть по цепочкам владения ownership chaining |
20 апр 16, 12:55 [19082034] Ответить | Цитировать Сообщить модератору |
SayAdm Member Откуда: Сообщений: 9 |
Спасибо! А как можно изменить запрос, чтобы аналогичные данные вывести для списка таблиц по шаблону LIKE 'prefix_%' ? |
||
25 апр 16, 12:01 [19102235] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Добавить таблицу, где есть имена и id таблиц |
||
25 апр 16, 12:06 [19102268] Ответить | Цитировать Сообщить модератору |
iljy Member Откуда: Сообщений: 8711 |
SayAdm, вместо object_id используйте join sys.tables и условие на имя таблицы. |
25 апр 16, 12:06 [19102272] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
SELECT pe.[permission_name], pe.[state], pr.name FROM sys.database_permissions pe JOIN sys.database_principals pr ON pe.grantee_principal_id = pr.principal_id JOIN sys.objects o ON o.[object_id] = pe.major_id WHERE pe.class = 1 AND pe.minor_id = 0 AND o.[type] = 'U' AND o.name LIKE 'prefix_%' |
||
25 апр 16, 12:07 [19102275] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
SayAdm, EXISTS ( SELECT 1 FROM sys.tables s WHERE NAME LIKE 'Конь%' AND s.object_Id = pe.major_id ), |
25 апр 16, 12:08 [19102284] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11562 |
можно как-то так, например:select T.TABLE_NAME, pe.permission_name, pe.state, pr.name from sys.database_permissions pe join sys.database_principals pr on pe.grantee_principal_id = pr.principal_id INNER JOIN (SELECT [TABLE_NAME] FROM [INFORMATION_SCHEMA].[TABLES] where TABLE_TYPE = 'BASE TABLE') T ON pe.major_id = object_id(T.TABLE_NAME) where pe.class = 1 and T.TABLE_NAME LIKE 'User%' and pe.minor_id = 0 ORDER BY T.TABLE_NAME, pe.permission_name |
25 апр 16, 12:10 [19102304] Ответить | Цитировать Сообщить модератору |
SayAdm Member Откуда: Сообщений: 9 |
Ребят, всем спасибо огромное! P.S: Так-же я еще нашел sp_helprotect, условия там особо не составиш, но полный список оно выводит вроде... |
25 апр 16, 12:35 [19102445] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |