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

Откуда: Самара
Сообщений: 70
День добрый, уважаемые! Вот такой простой вопрос поставил меня в тупик. Читал много тем по этому поводу и вроде всем советам проследовал, а не работает чета. ХП были созданы от имени администр и выполняются только им и все.

- Прямые разрешения на них все розданы в окне защищаемые объекты
- На таблицы где изменяются данные тоже полные права
- В коде VBA клиента переименовал процедуры с добавлением спереди dbo.имяпроцедуры

Но пишет что не находит таких процедур. А от имени роли sysadmin сразу находит....
Не подскажете че делать, и нафиг нужна такая безопасность, когда для выполнения простейшей ХП приходится полные права администратора давать всем пользователям, причем даже не права на базу а права на весь сервер и никак не меньше???
17 апр 12, 07:57    [12425148]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
Но пишет что не находит таких процедур.

Каких "таких процедур" ?
Где команда, переданная серверу ? Где сообщение об ошибке ?

Allllllllllex
Не подскажете че делать, и нафиг нужна такая безопасность, когда для выполнения простейшей ХП приходится полные права администратора давать всем пользователям, причем даже не права на базу а права на весь сервер и никак не меньше???

Вот почему каждый, кто не умеет настроить безопасность, начинает предъявлять претензии производителю софта ?
Вот вы что конктрено из хелпа прочитали про безопасность ?
17 апр 12, 08:29    [12425221]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31961
Allllllllllex
Не подскажете че делать
Дать права на процедуры пользователям
Allllllllllex
В коде VBA клиента переименовал процедуры с добавлением спереди dbo.имяпроцедуры
В смысле, зачем???
17 апр 12, 09:15    [12425371]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Уважаемый Glory! Уж извините, что ответы на такие простейшие вопросы мне не известны. Не хотял я отвлекать Вас от важных дел по всяким пустякам. И к безопасности SQL Server 2008 у меня нет претензий. И книжку я два дня читал по этому делу. Но весь прикол в том, что упустил что-то в этой книжке и нет времени заново ее перечитывать и еще другие штудировать. Конечно можно потратить два месяца и во всем разобраться ничего не спрашивая. Но тогда зачем, простите форум если все все и так узнать можно? И зачем Вам имя процедуры и сообщение об ошибке, если Вы, к примеру, уже раз 155 через это прошли, а проблема и так понятна. Если есть такой опыт и умения настроить безопасность, буду признателен за подсказку, а нет ну тыкды будем читать дальше все подряд, чеж делать.
А пишет он то че и говорил: Приложению Microsoft Access не удается найти объект "RezVOtch1"
(проект Access+sql 2008r2)
17 апр 12, 09:22    [12425399]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Дать права на процедуры пользователям


Так все права даны , а не работает
17 апр 12, 09:24    [12425411]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
iljy
Member

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

а внятно объяснить, что именно не работает, вы способны? С уазанием передаваемых команд и выдаваемых сервером ошибок.
17 апр 12, 09:52    [12425524]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Боюсь, правда, шо получится не совсем внятно тк Glory конечно прав, уровень теоретической подготовки хромает, но попробую
код VBA проекта акссесс:

Private Sub Кнопка62_Click()
On Error GoTo Err_Кнопка62_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "имяпр"
DoCmd.OpenStoredProcedure stDocName, acViewNormal, acEdit
и тд

ошибка сервера:
Приложению Microsoft Access не удается найти объект "имяпр"

А если запускать с правами создателя:

ALTER PROCEDURE имяпр
WITH EXECUTE AS OWNER AS
UPDATE dbo.tlb126RezultatyIspytanii
SET REZULTATPOPARAMETRU1261 = REZULTATPOPARAMETRU126
WHERE (REZULTATPOPARAMETRU126 IS NOT NULL) AND (REZULTATPOPARAMETRU1261 IS NULL)

ТО пишет следующую ошибку
"Невозможно выполнить в качестве участника базы данных, поскольку участник "dbo" не существует, этот тип участника не может проходить олицетворение, или отсутствует разрешение."

Может он хочет, чтоб у пользователя базы dbo было соответствующее ему имя входа на сервер, как у всех созданных там не автоматически других пользователей. Но у автопользователей (dbo, INFORMATION_SCHEMA, guest) у этих трех нет же сопоставленного им имени входа на сервер. А создать имя входа для уже автоматически созданного пользователя не получается.
Может проще сменить владельца у всех ХП?
17 апр 12, 10:33    [12425735]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31961
Allllllllllex
попробую
код VBA проекта акссесс:
Всегда, работая с сервером, работайте из SSMS. Из аксеса делайте вызов, когда уже всё работает в SSMS. Это намного быстрее, найдёте проблему за минуты, а не за дни.

Залогиньтесь в SSMS под тем пользователем, под которым подключаетесь из аксеса, и вызовите exec имяпр
Напишите сюда результат.

Allllllllllex
А если запускать с правами создателя:

ALTER PROCEDURE имяпр
Это не запуск процедуры, а изменение.
17 апр 12, 10:42    [12425793]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
[quot alexeyvg]
Allllllllllex
попробую
код VBA проекта акссесс:
Всегда, работая с сервером, работайте из SSMS. Из аксеса делайте вызов, когда уже всё работает в SSMS. Это намного быстрее, найдёте проблему за минуты, а не за дни.

Залогиньтесь в SSMS под тем пользователем, под которым подключаетесь из аксеса, и вызовите exec имяпр
Напишите сюда результат.


Если логинюсь от имени пользователя с ролью cервера sysadmin то пишет:
"(строк обработано: 0)"

Если логинюсь от имени пользователя со всеми ролями базы данных (включая db_owner) и со всеми ролями сервера, но только кроме роли сервера sysadmin, то пишет:
"Сообщение 2812, уровень 16, состояние 62, строка 1
Не удалось найти хранимую процедуру "qr248RezultatVOtchet1"."

Причем что exec dbo.qr248RezultatVOtchet1
что exec qr248RezultatVOtchet1
результаты одинаковые
17 апр 12, 11:09    [12425970]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
Если логинюсь от имени пользователя со всеми ролями базы данных (включая db_owner) и со всеми ролями сервера, но только кроме роли сервера sysadmin, то пишет:
"Сообщение 2812, уровень 16, состояние 62, строка 1
Не удалось найти хранимую процедуру "qr248RezultatVOtchet1"."

Причем что exec dbo.qr248RezultatVOtchet1
что exec qr248RezultatVOtchet1
результаты одинаковые

Потому что текущая база другая ?
17 апр 12, 11:27    [12426090]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
И зачем Вам имя процедуры и сообщение об ошибке, если Вы, к примеру, уже раз 155 через это прошли, а проблема и так понятна. Если есть такой опыт и умения настроить безопасность, буду признателен за подсказку, а нет ну тыкды будем читать дальше все подряд, чеж делать.

Вам тогда к Кашпировскому
А здесь нормальные люди, которые знают, что делать при той или иной ошибке. Но для этого нужен ее текст.
И кстати нужно не имя, "команда, переданная серверу". Это разные вещи.

Allllllllllex
И к безопасности SQL Server 2008 у меня нет претензий. И книжку я два дня читал по этому делу. Но весь прикол в том, что упустил что-то в этой книжке и нет времени заново ее перечитывать и еще другие штудировать.

Мда. Книжка по всей видимости так и называлась "По этому делу всего за 2 дня."
17 апр 12, 11:31    [12426119]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Glory
Allllllllllex
Если логинюсь от имени пользователя со всеми ролями базы данных (включая db_owner) и со всеми ролями сервера, но только кроме роли сервера sysadmin, то пишет:
"Сообщение 2812, уровень 16, состояние 62, строка 1
Не удалось найти хранимую процедуру "qr248RezultatVOtchet1"."

Причем что exec dbo.qr248RezultatVOtchet1
что exec qr248RezultatVOtchet1
результаты одинаковые

Потому что текущая база другая ?


Для роли сервера sysadmin все выполняется и "exec dbo.qr248RezultatVOtchet1" и "exec qr248RezultatVOtchet1" , без указания dbo. , А для роли сервера не sysadmin ниче не выполняется ни с dbo ни без dbo
17 апр 12, 11:32    [12426142]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
Для роли сервера sysadmin все выполняется и "exec dbo.qr248RezultatVOtchet1" и "exec qr248RezultatVOtchet1" , без указания dbo.

И что дальше то ?
Вы считаете, что сервер вас обманывает что ли ?
Как вы проверили наличие прав на процедуру, например ?
17 апр 12, 11:34    [12426165]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31961
Allllllllllex
Если логинюсь от имени пользователя со всеми ролями базы данных (включая db_owner) и со всеми ролями сервера, но только кроме роли сервера sysadmin, то пишет:
"Сообщение 2812, уровень 16, состояние 62, строка 1
Не удалось найти хранимую процедуру "qr248RezultatVOtchet1"."
Хорошо, теперь вызовите:
select db_name() 
select * from sysobjects where name = 'qr248RezultatVOtchet1'

для обоих вариантов логина.

Allllllllllex
Причем что exec dbo.qr248RezultatVOtchet1
что exec qr248RezultatVOtchet1
результаты одинаковые
exec qr248RezultatVOtchet1 писать не надо, вызывайте только exec dbo.qr248RezultatVOtchet1
17 апр 12, 11:38    [12426203]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
В менеджмент студио пользователь в роли базы, а у роли базы ВСЕ права на процедуру + у самого пользователя ВСЕ галочки стоят и назначение владельца и выполнение и тд
17 апр 12, 11:38    [12426205]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Allllllllllex
В менеджмент студио пользователь в роли базы, а у роли базы ВСЕ права на процедуру + у самого пользователя ВСЕ галочки стоят и назначение владельца и выполнение и тд

Выполните из-под вашего пользователя
select * from sys.fn_my_permissions('qr248RezultatVOtchet1','OBJECT')
17 апр 12, 11:41    [12426236]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
В менеджмент студио пользователь в роли базы, а у роли базы ВСЕ права на процедуру
Замечательно

Теперь как в открытом коннекте, вы проверили, что у текущего пользователя есть права на эту процедуру ?
Allllllllllex
+ у самого пользователя ВСЕ галочки стоят и назначение владельца и выполнение и тд

Офигительно. Включая галочки _запрета_ ?
17 апр 12, 11:42    [12426242]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
iljy ,
Вы я надеюсь в курсе, что при установке запрета разрешения снимаются автоматически, так шо или то или то. )))

А по существу вот:
Под логином админ запрос
select db_name()
select * from sysobjects where name = 'dbo.qr248RezultatVOtchet1'


выдает METALL или master в зависимости от того какая база выбрана текущей

А под логином не админ
выдает master при выборе master, а вот при выборе METALL пишет:

"(строк обработано: 1)
Сообщение 229, уровень 14, состояние 5, строка 2
Запрещено разрешение "SELECT" на объект "sysobjects" базы данных "mssqlsystemresource", схемы "sys"."
17 апр 12, 11:58    [12426374]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
Запрещено разрешение "SELECT" на объект "sysobjects" базы данных "mssqlsystemresource", схемы "sys"."

Потому что кто-то сделал "у самого пользователя ВСЕ галочки стоят ", включая db_denyread ?
17 апр 12, 12:01    [12426399]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Так хочется верить что в этом вся причина...
Неужели это тот самый ответ на все вопросы который мы тщательно пытались найти ...? )))
счас попробую
17 апр 12, 12:13    [12426529]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Убрал галочки db_denydataread и db_denydatawriter. А все остальные оставил. Теперь запрос

select db_name()
select * from sysobjects where name = 'dbo.qr248RezultatVOtchet1'


выдает METALL или master как для админа так и не для админа, а ХП все равно запускается только от админа
Да и раньше же у меня стояла тока галочка db_owner, без db_denydataread и db_denydatawriter , и не работало.

Запрос: exec dbo.qr248RezultatVOtchet1 Дает: " (строк обработано: 0)" с обоими пользователями


select * from sys.fn_my_permissions('qr248RezultatVOtchet1','OBJECT') Дает целую таблицу для админа и пустую таблицу для не админа
17 апр 12, 12:44    [12426818]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Allllllllllex
Запрос: exec dbo.qr248RezultatVOtchet1 Дает: " (строк обработано: 0)" с обоими пользователями

Здесь нет никакой ошибки. Процедура работает.
17 апр 12, 12:47    [12426838]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Allllllllllex
Запрос: exec dbo.qr248RezultatVOtchet1 Дает: " (строк обработано: 0)" с обоими пользователями

Эмммм... вообще это говорит о том, что процедура запускается.
Allllllllllex
select * from sys.fn_my_permissions('qr248RezultatVOtchet1','OBJECT') Дает целую таблицу для админа и пустую таблицу для не админа

А
select * from sys.fn_my_permissions('dbo.qr248RezultatVOtchet1','OBJECT')  

?
17 апр 12, 12:47    [12426840]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Поспешил. для Админа для базы METALL :
qr248RezultatVOtchet1 SELECT
qr248RezultatVOtchet1 UPDATE
qr248RezultatVOtchet1 REFERENCES
qr248RezultatVOtchet1 INSERT
qr248RezultatVOtchet1 DELETE
qr248RezultatVOtchet1 EXECUTE
qr248RezultatVOtchet1 RECEIVE
qr248RezultatVOtchet1 VIEW CHANGE TRACKING
qr248RezultatVOtchet1 VIEW DEFINITION
qr248RezultatVOtchet1 ALTER
qr248RezultatVOtchet1 TAKE OWNERSHIP
qr248RezultatVOtchet1 CONTROL


Для не админа и базы металл:
qr248RezultatVOtchet1 REFERENCES
qr248RezultatVOtchet1 EXECUTE
qr248RezultatVOtchet1 VIEW DEFINITION
qr248RezultatVOtchet1 ALTER
qr248RezultatVOtchet1 TAKE OWNERSHIP
qr248RezultatVOtchet1 CONTROL


Для обоих и базы мастер - пустая тлб
17 апр 12, 12:49    [12426854]     Ответить | Цитировать Сообщить модератору
 Re: Почему ХП выполняется только от имени роли sysadmin?  [new]
Allllllllllex
Member

Откуда: Самара
Сообщений: 70
Это без dbo
17 апр 12, 12:51    [12426882]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить