Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 T Sql Список текущих прав на таблицу  [new]
SayAdm
Member

Откуда:
Сообщений: 9
Здравствуйте, Друзья

Подскажите плз, как на tsql получить список всех прав которые выданы на таблицу ?
20 апр 16, 12:31    [19081822]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
SayAdm,

за что вы так ненавидите гугл?
20 апр 16, 12:48    [19081983]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
Konst_One
Member

Откуда:
Сообщений: 11678
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]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
SayAdm
Member

Откуда:
Сообщений: 9
Konst_One
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


Спасибо! А как можно изменить запрос, чтобы аналогичные данные вывести для списка таблиц по шаблону LIKE 'prefix_%' ?
25 апр 16, 12:01    [19102235]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
SayAdm
А как можно изменить запрос, чтобы аналогичные данные вывести для списка таблиц по шаблону LIKE 'prefix_%' ?

Добавить таблицу, где есть имена и id таблиц
25 апр 16, 12:06    [19102268]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
iljy
Member

Откуда:
Сообщений: 8711
SayAdm,

вместо object_id используйте join sys.tables и условие на имя таблицы.
25 апр 16, 12:06    [19102272]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SayAdm
чтобы аналогичные данные вывести для списка таблиц по шаблону LIKE 'prefix_%'

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]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
SayAdm,

EXISTS (
SELECT 1
FROM sys.tables s
WHERE
NAME LIKE 'Конь%'
AND s.object_Id = pe.major_id
),
25 апр 16, 12:08    [19102284]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
Konst_One
Member

Откуда:
Сообщений: 11678
можно как-то так, например:

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]     Ответить | Цитировать Сообщить модератору
 Re: T Sql Список текущих прав на таблицу  [new]
SayAdm
Member

Откуда:
Сообщений: 9
Ребят, всем спасибо огромное!

P.S: Так-же я еще нашел sp_helprotect, условия там особо не составиш, но полный список оно выводит вроде...
25 апр 16, 12:35    [19102445]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить