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

Вопрос к знатокам сервера.
Почему то сервер начал ругаться на момент подключения всем обычным юзерам (см. рисунок). Раньше такого поведения не замечал. Если дать права админа, то таких ругательств не получаем, но само собой разумеется такое решение не айс.
Администраторов привлекать к ответственности бесполезно, разумеется будут всячески отрицать и утверждать о том, что мол настройки сети и сервера не трогали вовсе.
Как бороться с такой напастью?
А где находится база "mssqlsystemresource" и почему студио не показывает ее?

К сообщению приложен файл. Размер - 25Kb
24 июн 15, 04:17    [17809223]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
наверное, кто-то сделал явный deny select on syscharsets to public?
а почему при подключении..
какой-нибудь логон-триггер и там лезут в этот syscharsets?
24 июн 15, 07:13    [17809301]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
Незанющий
Guest
o-o,

MS Access как клиентский интерфейс. Когда открывается любая таблица / форма и т.д. в MS Access, выскакивает такое сообщение.
Сами таблицы физически находятся на стороне SQL Server 2008 R2.
Нашёл вьюшку "sys.syscharsets". Попробую явно дать право на чтение.
24 июн 15, 07:53    [17809343]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
Вообще-то на syscharsets и так выдан select to public, а у вас явно кто-то deny сделал. Автора шутки можно найти в дефолтном трэйсе, если не так давно все произошло и трэйс не перезатерся
24 июн 15, 08:21    [17809384]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
Не знающий
Guest
Что то не получается.
Попробовал явно дать право на чтение public. Всё равно ругается.
Попробовал коннектиться через odbcad32 обычным юзером. Там точно также ругается на "syscharsets".
Глюк какой то.
А где это база "mssqlsystemresource" находится? Она вообще существует?
select db_id('mssqlsystemresource') возвращает null и студио не показывает. Куда надо копать?
24 июн 15, 13:00    [17810870]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
komrad
Member

Откуда:
Сообщений: 5735
Не знающий
Что то не получается.
Попробовал явно дать право на чтение public. Всё равно ругается.
Попробовал коннектиться через odbcad32 обычным юзером. Там точно также ругается на "syscharsets".
Глюк какой то.
А где это база "mssqlsystemresource" находится? Она вообще существует?
select db_id('mssqlsystemresource') возвращает null и студио не показывает. Куда надо копать?

это скрытая системная база, в обычных условиях она недоступна

покажите результат
use master 
exec sp_helprolemember 'db_denydatareader'
24 июн 15, 13:06    [17810910]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
Gviber
Member

Откуда:
Сообщений: 124
Представления - системные представления.

Смотрим права у таблицы. DENY на любом уровне (у БД, у схемы, у таблицы) перекрывает любые разрешения.
24 июн 15, 13:07    [17810917]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
граждане, да вы что, это элементарный deny в мастере
(типа deny select on syscharsets to public)
ищется тоже на раз
select *
from sys.database_permissions
where OBJECT_NAME(major_id) = 'syscharsets'
24 июн 15, 13:17    [17810979]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
Gviber
Member

Откуда:
Сообщений: 124
В общем, пусть будет так:

use master
REVOKE SELECT ON master.[sys].[syscharsets] TO [public]
24 июн 15, 13:25    [17811051]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
не-не, надо сперва посмотреть, что у него в пермишенах.
выдан/заденаен, и кому.
там можно разного наваять, если подключить фантазию.

Не знающий , покажите нам результат
select *
from sys.database_permissions
where OBJECT_NAME(major_id) = 'syscharsets'
24 июн 15, 13:28    [17811066]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
komrad
покажите результат
use master 
exec sp_helprolemember 'db_denydatareader'

не оно.
если провернуть злую шутку по запихиванию юзера в db_denydatareader в мастере,
он отвалится при подключении еще раньше, не доходя до syscharsets:

К сообщению приложен файл. Размер - 14Kb
24 июн 15, 13:36    [17811122]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
Не знающий
Guest
komrad
Не знающий
Что то не получается.
Попробовал явно дать право на чтение public. Всё равно ругается.
Попробовал коннектиться через odbcad32 обычным юзером. Там точно также ругается на "syscharsets".
Глюк какой то.
А где это база "mssqlsystemresource" находится? Она вообще существует?
select db_id('mssqlsystemresource') возвращает null и студио не показывает. Куда надо копать?

это скрытая системная база, в обычных условиях она недоступна

покажите результат
use master 
exec sp_helprolemember 'db_denydatareader'


Большое спасибо за наводку!!!

Ваш запрос сообщил, что "guest" является членом "db_denydatareader".
Попробовал войти в БД "master" и там оказывается "guest" не только "db_denydatareader", но "db_denydatawriter". Убрал птички и сразу же проблема решилась.


Кто то видать подшутил. Вряд ли рядовые пользователи, у них нет студио, да и уровень подготовки не тот. Скорее всего один из айтишников. Блин столько времени убил.
25 июн 15, 16:59    [17816513]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
надо было сразу в дефолтном трэйсе поискать, КТО.
шутников надо знать в лицо
25 июн 15, 17:04    [17816554]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
o-o
Guest
Не знающий
Вряд ли рядовые пользователи, у них нет студио, да и уровень подготовки не тот.

а у вас что, рядовые пользователи отмаплены в мастер?
в общем, в трэйсе наверное уже поздновато искать, но "ставить галочки" на ролях
могут лишь члены db_owner, db_securityadmin.
вот и посмотрите, если никого там нет, то думайте, кто у вас еще сисадмин
25 июн 15, 17:10    [17816613]     Ответить | Цитировать Сообщить модератору
 Re: запрещено разрешение "Select" на объект "syscharsets"  [new]
komrad
Member

Откуда:
Сообщений: 5735
Не знающий
Кто то видать подшутил. Вряд ли рядовые пользователи, у них нет студио, да и уровень подготовки не тот. Скорее всего один из айтишников. Блин столько времени убил.


можно вывести их на чистую воду, если еще осталось в трейс-файлах

Попробуйте :

declare @all_files varchar(512)
	
/* prepare path for all files */
select @all_files=CAST(value AS VARCHAR(200))
FROM sys.fn_trace_getinfo(DEFAULT)
WHERE traceid = 1 AND property = 2
select @all_files=left(@all_files,len(@all_files)-charindex('_',reverse(@all_files)))+right(@all_files,4)

SELECT	top 100
		te.name, 
		t.SPID,
		t.LoginName,
		t.Hostname,
		t.ClientProcessID,
		t.DatabaseName, 
		t.StartTime, 
		t.ApplicationName ,
	t.TextData,
	t.RoleName,
	t.TargetUserName

FROM sys.traces st CROSS Apply
	::fn_trace_gettable(@all_files, st.max_files) AS t 
INNER JOIN sys.trace_events AS te ON t.EventClass = te.trace_event_id 
WHERE 
	te.name = 'Audit Add Member to DB Role Event'  
	and st.is_default=1 
	and st.status=1
	and t.RoleName in ('db_denydatareader','db_denydatawriter')
ORDER BY StartTime desc;
25 июн 15, 18:04    [17816891]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить