powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE. 15.7 SP135. non-impersonated session
13 сообщений из 13, страница 1 из 1
ASE. 15.7 SP135. non-impersonated session
    #39033433
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго!

Вдруг с установкой нового патча (SP135) выхватил проблему с созданием процедуры, для которой указывалась кляуза "execute as owner". Ругается следующим образом:

автор Execute as owner procedure cannot be created by an alias or with the
SETUSER command when the procedure has SQL statements that reference
objects across databases. Create the procedure from a non-impersonated session .


Собственно все работало (да и работает) на предыдущих SP(61/122).

СайБук молчит про это безобразие под названием "a non-impersonated session".
Кто-нибудь знает что это и куда это?
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033471
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В точности не знаю. Ни разу не встречал такой ошибки.
Но предположу что корни проблемы растут из: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc01672.1570/html/sec_admin/X53658.htm
Ну а лечить достаточно просто. Если ХП должна принадлежать ЮзеруА, то и логинится на сервер надо под этим самым юзером.
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033477
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНу а лечить достаточно просто. Если ХП должна принадлежать ЮзеруА, то и логинится на сервер надо под этим самым юзером.

Казалось бы да, но не помогает.
Делаю явное указание овнера процедуры при создании = тому, под кем залогинен - ошибка та же.
White OwlВ точности не знаю. Ни разу не встречал такой ошибки.

Да вот же. До SP135 все работало прекрасно, код не менялся. А тут такая нехорошая подстава.
Есть, конечно, обходные варианты = как заставить это работать и отказаться от execute as owner, но так же есть желание докопаться до корня проблемы...
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033486
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83 отказаться от execute as ownerВ принципе, есть еще один вариант.
Если внутри процедуры идут игры с логинами (set identity_* или setuser) то у процедуры могут появиться дополнительные ограничения. Вплоть до полной невозможности запуска никем кроме владельца ХП.
Ну и проблемы несовпадения владельца и создателя тоже никуда не деваются....

В общем, так: вырезай из проблемной процедуры весь код пока ошибка не исчезнет - будешь знать какая именно команда хулиганит. Результат публикуй тут. Ну и еще раз обрати внимание на того кем заходишь на сервер, в кого ты алиасишься в базе данных и кто заявляется владельцем процедуры. И чтоб никаких setuser не мешалось.
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033498
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
похоже просто нельзя объекты другой базы пользовать.
Т.е. тривиальная процедура по типу

Код: sql
1.
2.
3.
4.
5.
6.
Create procedure dbo._zm_TEST
with execute as owner
as 
BEGIN
  Select count(*) from anotherDATABASE..SimpleTable
END 



уже падает с этой ошибкой. Владелец у баз один и тот же и равен владельцу процедуры.
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033534
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83White Owl,
похоже просто нельзя объекты другой базы пользовать.ЭТО не может быть правдой. У меня куча процедур работает на кросс-базовой основе.

Mikle83Т.е. тривиальная процедура по типу

Код: sql
1.
2.
3.
4.
5.
6.
Create procedure dbo._zm_TEST
with execute as owner
as 
BEGIN
  Select count(*) from anotherDATABASE..SimpleTable
END 



уже падает с этой ошибкой. Владелец у баз один и тот же и равен владельцу процедуры.эээээ..... Ну во первых:
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc36272.1570/html/commands/X52197.htm
Нет такой опции "execute as owner".
Эта опция официально появилась в 16-ой версии. Ты уверен что у тебя 15.7? :)

Ну а во вторых, у тебя уже владельцы меняются. DBO не может быть логином. Ты логинишься как простой юзер, который либо объявлен как владелец базы, либо добавлен в dbo как псевдоним. Создатель процедуры уже не равен владельцу процедуры. Ты уже нарушаешь правило ownership chains. Оно странное, крышесносительное и не очень удобное, но оно есть. И его чрезвычайно важно соблюдать в кросс-базовой работе.


Если кратко, то делать надо так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
> isql -U mary ....
use db1
go
-- Положим что mary является владельцем db1 и может создавать объекты как dbo.
create table dbo.t ( .... )
go
use db2
go
create procedure mary.sp as
  select * from db1.dbo.t
go
grant execute on mary.sp to john
go


При этом, mary НЕ МОЖЕТ быть dbo в db2. И она ОБЯЗАНА быть создателем таблицы t в базе db1.
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033700
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMikle83White Owl,
похоже просто нельзя объекты другой базы пользовать.ЭТО не может быть правдой. У меня куча процедур работает на кросс-базовой основе.
Эт здорово. У меня их тоже достаточно.
Еще раз повторю до SP135 все работало прекрасно (да и работает). Проблема возникла только на этом патче.

White Owlэээээ..... Ну во первых:
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc36272.1570/html/commands/X52197.htm
Нет такой опции "execute as owner".
Эта опция официально появилась в 16-ой версии. Ты уверен что у тебя 15.7? :)

А мужики-то не знают :)
Они это еще в SP100 прикрутили
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc36272.1572/html/commands/X52197.htm?resultof="create" "creat" "procedure" "procedur"


White OwlТы логинишься как простой юзер, который либо объявлен как владелец базы, либо добавлен в dbo как псевдоним.

Псевдоним для DBO. Но разница не большая - даже если делаю тестовые базы с одним владельцем - проблема та же

Еще раз отмечу - до SP135 все это прекрасно работало и структура базы не менялась.
Поставил патч - пошла проблема. На серверах без патча = проблемы нет :)
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033704
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83Они это еще в SP100 прикрутили

а в реальности уже на 61 работает
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39033829
Mikle83,

Execute as owner procedure cannot be created by an alias ...

А если попробовать создать процедуру от пользователя, кторый прописан в базе явно, а не как алиас на dbo.
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39034064
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл парольMikle83,
Execute as owner procedure cannot be created by an alias ...
А если попробовать создать процедуру от пользователя, который прописан в базе явно, а не как алиас на dbo.

Пробовал. Те же яйца - вид сбоку.
Для меня пока самая загадка, это фраза "a non-impersonated session".
Что под этим могли подразумевать разработчики СайбезаСАПа - пока не понимаю
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39034247
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем это все?
Зачем много баз, зачем дергать из одной другую, зачем процедуры не под dbo?

Все это суета...
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39034904
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
да вот не знаю, почему Сайбез выносит мониторинговые и системные таблицы (типа sysprocesses/syslogins) в отдельную БД :)


Да и так, к примеру, разделение архивных и оперативных таблиц - позволяет, как минимум, экономить время на ежедневных бэкапах Ибо архивные таблицы "пополняются" по бизнес-флоу - только лишь по выходным, а согласно политике этой конторы - бэкап должен делаться полноценный ежедневно :( (зачем - это оч. схоластический вопрос, но так вот построены процессы)...
...
Рейтинг: 0 / 0
ASE. 15.7 SP135. non-impersonated session
    #39039957
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83Забыл парольMikle83,
Execute as owner procedure cannot be created by an alias ...
А если попробовать создать процедуру от пользователя, который прописан в базе явно, а не как алиас на dbo.

Пробовал. Те же яйца - вид сбоку.
Для меня пока самая загадка, это фраза "a non-impersonated session".
Что под этим могли подразумевать разработчики СайбезаСАПа - пока не понимаю

может попробовать перед созданием процедуры выполнить команду

Код: sql
1.
2.
3.
4.
5.
6.
setuser 'proc_owner'
go
create proc ...
go
setuser 
go 



?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE. 15.7 SP135. non-impersonated session
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]