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

Откуда: Чебаркуль
Сообщений: 3741
Как скриптом получить список таблиц и вью, на которые у public нет никаких прав?
30 авг 16, 16:43    [19608393]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
o-o
Guest
паблик-то какой, стандартный, который вообще ничего в базе не видит
или паблик особенный, которому прав навыдавали?
30 авг 16, 16:58    [19608506]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
o-o
Guest
в несистемных базах *стандартный* паблик не видит ни одной пользовательской таблицы и ни одного вью, ок?
смело пишем
select *
from myDB.sys.objects
where type in ('u', 'v')
30 авг 16, 17:10    [19608585]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3741
o-o
паблик-то какой, стандартный, который вообще ничего в базе не видит
или паблик особенный, которому прав навыдавали?


стандартный, юзер дает права на все таблицы:

grant select on t1 to public;

затем режет видимость данных самопально на уровне записей.

Вот хотелось бы список, у которых нет прав для public
30 авг 16, 17:11    [19608591]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
o-o
Guest
ну и как-то так для паблика с выданными правами
select *
from sys.objects o
where type in ('u', 'v')
and not exists (select *
                from sys.database_permissions p
                where o.object_id = p.major_id
                      and state = 'g' and grantee_principal_id = 0)

это если права на конкретные объекты.
но ему могли выдать что-то на схемы или на всю базу.
select на всю базу, а лучше control.
тогда он видит гораздо больше, но скрипт писать не буду
30 авг 16, 17:22    [19608644]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
o-o
Guest
Ролг Хупин
o-o
паблик-то какой, стандартный, который вообще ничего в базе не видит
или паблик особенный, которому прав навыдавали?


стандартный, юзер дает права на все таблицы:

grant select on t1 to public;

затем режет видимость данных самопально на уровне записей.

Вот хотелось бы список, у которых нет прав для public

формулировка поменялась.
до этого было "нет НИКАКИХ прав",
для этого скрипт выше.
а если выискивать, на что нет, это можно охренеть.
ибо если какой-то извращенец выдавал права на каждую из колонок,
а на какие-то забыл,
то надо проверить для каждой таблицы каждую колонку.
а может, на часть таблиц кто-то выдал селект на все, а потом денай на что-то.
нет уж, это я писать тоже не буду
---
и вообще, при чем тут на уровне записей?
это же как-то программно,
стандартно ничего на уровне записей не запретишь,
а вот с колонками можно ужас что наделать.
и даже запретить всю таблицу, а потом навыдавать грантов на определенные колонки.
и эти гранты перешибут всеобщий табличный денай
30 авг 16, 17:28    [19608660]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать списко таблиц и вью?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3741
o-o
ну и как-то так для паблика с выданными правами
select *
from sys.objects o
where type in ('u', 'v')
and not exists (select *
                from sys.database_permissions p
                where o.object_id = p.major_id
                      and state = 'g' and grantee_principal_id = 0)

это если права на конкретные объекты.
но ему могли выдать что-то на схемы или на всю базу.
select на всю базу, а лучше control.
тогда он видит гораздо больше, но скрипт писать не буду


спасибо, то, что надо ;-)
30 авг 16, 18:26    [19608917]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить