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

Откуда: Ивано-Франковск-Киев
Сообщений: 462
Права доступа к объектам повторяются по два раза.
Например, для таблиц у окне свойств, вкладка Permissions, дважды присутствует право Select, Insert, Update.
Для других объектов – аналогично.

Почему и как исправить?


print @@version

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


Спасибо.

К сообщению приложен файл. Размер - 17Kb
18 окт 16, 09:42    [19793160]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e4827c0c-2496-469c-b45b-badfae47eaa3/duplicate-user-permissions-under-securables-in-sql-server-2012?forum=sqlsecurity
Резюме - артефакт отображения доступов в SSMS. Версии - самые разные.
Смотрите доступы запросом. Таким, например:
select
	o.name, o.type_desc,
	schema_name(o.schema_id) schema_name,
	u1.name from_name, u1.type_desc from_type,
	u2.name to_name, u2.type_desc to_type,
	p.permission_name, p.state_desc
from sys.all_objects o
join sys.database_permissions p on p.major_id=o.object_id
join sys.database_principals u1 on u1.principal_id=p.grantor_principal_id
join sys.database_principals u2 on u2.principal_id=p.grantee_principal_id
where o.object_id=object_id(N'dbo.MyTable')
order by u2.name, p.permission_name, p.state_desc
18 окт 16, 11:02    [19793566]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 462
Сон Веры Павловны,

Смотреть доступы, то я могу, но как их теперь раздавать?

Скрипт
GRANT SELECT ON [dbo].[Таблица1] TO [public] AS [dbo]


дает право для вторй строчки SELECT

В результате никакого права чтение никто не получат.
Сервер выдаёт сообщение The SELECT permission was denied on the object 'Таблица1', database 'base1', schema 'dbo'.

После того как я в окне свойств ставлю право на первый SELECT - всё работает.

Но мне надо что бы работал скрипт.
18 окт 16, 12:16    [19794017]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
aleks2
Guest
Shovgenyuk
Сон Веры Павловны,

Смотреть доступы, то я могу, но как их теперь раздавать?

Скрипт
GRANT SELECT ON [dbo].[Таблица1] TO [public] AS [dbo]


дает право для вторй строчки SELECT

В результате никакого права чтение никто не получат.
Сервер выдаёт сообщение The SELECT permission was denied on the object 'Таблица1', database 'base1', schema 'dbo'.

После того как я в окне свойств ставлю право на первый SELECT - всё работает.

Но мне надо что бы работал скрипт.


Осподе, у тя профайлер отобрали?
18 окт 16, 12:22    [19794064]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
Shovgenyuk
Member

Откуда: Ивано-Франковск-Киев
Сообщений: 462
aleks2,

:) не отобрали...

Как ету хрень исправить?
Неужели только переустановка сервера?
18 окт 16, 12:27    [19794104]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Shovgenyuk
aleks2,

:) не отобрали...

Как ету хрень исправить?
Неужели только переустановка сервера?

как вариант пользователь входит в роль у которой есть запрет
18 окт 16, 12:44    [19794214]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
Shovgenyuk
В результате никакого права чтение никто не получат.

use tempdb
go
if object_id(N'dbo.t') is not null
	drop table dbo.t;
if exists (select 1 from sys.database_principals where name='foo' and type='S')
	drop user foo;
create table dbo.t(n int)
go
create user foo without login
go
grant select on dbo.t to [public] as dbo
go
execute as user='foo'
select * from sys.fn_my_permissions('dbo.t', 'OBJECT');
select * from dbo.t;
revert
go


Результат:

entity_name   subentity_name     permission_name
------------------------------------------------
dbo.t SELECT
dbo.t n SELECT

(2 row(s) affected)

n
-----------

(0 row(s) affected)

- все права прекрасно назначаются.
Shovgenyuk
Неужели только переустановка сервера?

Вы ссылку выше вообще читали? Это особенность SSMS, а не сервера.
18 окт 16, 12:48    [19794238]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Сон Веры Павловны,

да там точно прямой запрет от кого то приходит
18 окт 16, 13:18    [19794431]     Ответить | Цитировать Сообщить модератору
 Re: Повторяются права доступа в SSMS  [new]
Владислав Колосов
Member

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

автор
Почему и как исправить?


Никак, это фича интерфейса. Там один раз на самом деле.
18 окт 16, 14:44    [19794906]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить