|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Добрый день, создаю процедуру CREATE PROCEDURE public.sysdbopen() SET LOCK MODE TO WAIT 5; select sysadmin:task("set sql user tracing off",DBINFO('sessionid')) colname from sysadmin:sysusers into temp ttt_express with no log; drop table ttt_express; END PROCEDURE; после создания данной процедуры ни 1 юзер,включая дба и informix, не может подключиться к базе.если убираю селект-все работает.Сам селект отдельно тоже работает из-под юзера,которому дал права на базу sysadmin. Самое интересное то,что если я создаю эту же процедуру в своей схеме,то все хорошо.Как только я пишу public-я не могу приконнектится. Куда копать,подскажите плиз? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 13:54 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeV, да,забыл сказать.ругается он no connect permission ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 13:58 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Ну так дайте права на коннект ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 14:15 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
klepa, права на коннект дал себе на все базы.да и создавая эту процедуру в своей схеме все работает же. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 14:18 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeV, Подключиться к базе Вы не можете потому, что sysdbopen() завершается с ошибкой. Проблема в том что из соображений безопасности у public нет пермишена на коннект к БД sysadmin. У меня все заработало после того как сделал GRANT CONNECT TO public; для sysadmin. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2011, 17:20 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
DrGonzo, дал права public на все базы,поменял процедуру sysdbopen() и теперь не могу никем приконнектиться( ни dbaccess,ни server studio..Как можно запустить informix,чтобы перекомпиллять процедуру обратно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 09:40 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeVDrGonzo, дал права public на все базы,поменял процедуру sysdbopen() и теперь не могу никем приконнектиться( ни dbaccess,ни server studio..Как можно запустить informix,чтобы перекомпиллять процедуру обратно? Установить переменную окружения IFX_NODBPROC в любое значение, например 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 10:39 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeV, из документации: To avoid situations in which a database cannot be opened, take the following precaution while you are writing and debugging a sysdbopen procedure: Set the IFX_NODBPROC environment variable before you connect to the database. When IFX_NODBPROC is set, the procedure is not executed, and failures cannot prevent the database from opening. . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 10:40 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeVDrGonzo, дал права public на все базы,поменял процедуру sysdbopen() и теперь не могу никем приконнектиться( логичней было бы сделать процедуру, от пользователя информикс и дать грант execute on this_procedure to public, и ее уже вызывать из public.sysdbopen() а вообще текст процедуры вызывает вопросы, нафига временная таблица????? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 10:52 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Журавлев Денис, спасибо большое за мысль.все получилось. создал процедуру informix.sysdbopen(), дал в ней права public,а из процедуры public.sysdbopen просто вызываю informix.sysdbopen, внутри которой уже вызываю task()... всем спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 11:44 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeVЖуравлев Денис, спасибо большое за мысль.все получилось. создал процедуру informix.sysdbopen(), дал в ней права public ,а из процедуры public.sysdbopen просто вызываю informix.sysdbopen, внутри которой уже вызываю task()... всем спасибочего чего ? Код в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 11:48 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Журавлев Дениса вообще текст процедуры вызывает вопросы, нафига временная таблица????? Наверное чтобы с циклом не заморачиваться.... Но что больше всего смущает - зачем при коннекте каждого пользователя, отключать трейс всем пользователям... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 14:02 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
АнатоЛойЖуравлев Дениса вообще текст процедуры вызывает вопросы, нафига временная таблица????? Наверное чтобы с циклом не заморачиваться.... Но что больше всего смущает - зачем при коннекте каждого пользователя, отключать трейс всем пользователям... сорри, точнее зачем при коннекте пользователя отключать этой сессии трейс столько раз подряд, сколько описано пользователей в БД...[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 14:05 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
вот что получилось: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
может есть какая-нить табличка информиксовая? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 18:09 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
а по проще никак не? Как такой вариант: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2011, 23:10 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Журавлев Денис, спасибо большое за совет.да,действительно так проще,но вызывать исполнение процедуры так и не получилось.Если я пишу execute procedure sysadmin:task, то при коннекте выдает ошибку SQL Error (-684): Function (sysadmin:informix.task) returns too many values. Пишу свой селект из этой же функции-все норм.Как правильно вызвать процедуру в таком случае? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 09:30 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
LudeVЖуравлев Денис, спасибо большое за совет.да,действительно так проще,но вызывать исполнение процедуры так и не получилось.Если я пишу execute procedure sysadmin:task, то при коннекте выдает ошибку SQL Error (-684): Function (sysadmin:informix.task) returns too many values. Пишу свой селект из этой же функции-все норм.Как правильно вызвать процедуру в таком случае? спасибовы как вообще догадались вместо user использовать whoami ? Эта переменная стандартна для всех субд. строка там возращается, ее надо куда-нибудь сложить. И неплохо бы проверить что в той строке, удалось не удалось включить трассировку, и залогировать в табличку в случае проблемы. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 09:45 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Журавлев Денис, вчера не догадался насчет user,поэтому пришлось извращаться((( спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 09:50 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
написав select sysadmin:task() colname from prime206:sysusers вы трассировку включили очень много раз, столько сколько пользователей в базе prime206, об этом уже выше писал Анатолий. Если нужен аналог: select * from dual пишите либо select * from systables where tabid=99 либо select * from table(set{1}) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 10:02 |
|
настройка прав для выполнения процедуры
|
|||
---|---|---|---|
#18+
Журавлев Денис, я понял.спасибо большое ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 10:16 |
|
|
start [/forum/topic.php?fid=44&msg=37363094&tid=1607306]: |
0ms |
get settings: |
12ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
32ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
372ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 719ms |
0 / 0 |