|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Добрый день, изменил процедуру sysdbopen,в которой указал if user like ('name') then execute function sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret_val; end if; проверка пароля и пользователя проходит на уровне ОС. Так вот логирование работает только для тех,кто находится в группе informix. Выставил права на выполнение функции sysadmin:task этому пользователю,но пока не добавил в группу informix пишет,что нет прав на коннект. Почему эта функция может выполняться только пользователем из группы,а не всеми,кому даны права? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 13:17 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeV, точнее,я догадываюсь почему: т.к. это внешняя процедура,то она лежит где-то в ОС,а на выполнение на уровне ОС выставлены права только этой группе. подскажите плиз где найти эту процедуру или какому файлу нужно дать права необходимые? спасибо огромное ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 13:19 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeV, скорее всего это rootdbs, но если я дам файлу rootdbs права отличные от 660,то ведь будет ошибка! The chunk '**/rootdbs' must have READ/WRITE permissions for owner and group (660) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 13:27 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
11021425 авторскорее всего это rootdbs, но если я дам файлу rootdbs права отличные от 660,то ведь будет ошибка! The chunk '**/rootdbs' must have READ/WRITE permissions for owner and group (660) Ох, мне бы такой травы, я бы захватил галактику. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 13:59 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Журавлев Денис, не выполняется процедура CREATE PROCEDURE informix.sysdbopen() SET LOCK MODE TO WAIT 5; if user in (*****) then execute procedure sysadmin:task("set sql user tracing on",DBINFO('sessionid')); end if; END PROCEDURE; пользователь выполняет процедуру informix.sysdbopen(),а внутри нее не может выполнить execute procedure sysadmin:task ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:19 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
В Энциклопедии Юных Сурков сказано You must be connected to the sysadmin database as user informix or another authorized user. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:27 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
sysadmin:task("set sql user tracing on",DBINFO('sessionid')) это функция, надо смотреть что она возвращает. CREATE dba function informix.set_tracing_on() define ret varchar execute procedure sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret return ret END PROCEDURE; grant execute on informix.set_tracing_on to public; и выполните от обычного пользователя. Результат покажите нам. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:32 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Журавлев Денис, CREATE dba function informix.set_tracing_on() returning char(50) define ret varchar; execute procedure sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret; return ret; END function; grant execute on informix.set_tracing_on to public; execute function informix.set_tracing_on() 16.11.11 13:43 Executing statement: execute function informix.set_tracing_on() SQL Error (-387): No connect permission. ISAM error: no record found. Error Position: Ln: 1 Col: 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:43 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeV, дал права на коннект к базе sysadmin для этого пользователя,теперь все хорошо. спасибо всем большое ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:48 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
а кстати, зачем там task попробуйте Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 14:52 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Журавлев Денис, не выполняется. процедура создалась нормально,а вот при ее вызове ругается на синтаксическую ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:04 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeVЖуравлев Денис, не выполняется. процедура создалась нормально,а вот при ее вызове ругается на синтаксическую ошибкуу меня скобка закрывающая лишняя, вы так и создали? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:11 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
и вообще кстати: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:12 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Журавлев Денис, скобку убрал и делал процедуру - все тоже самое. Я вообще что-то уже запустался, помогите плиз. есть процедура public.sysdbopen() CREATE PROCEDURE "public".sysdbopen() SET LOCK MODE TO WAIT 5; execute procedure informix.sysdbopen(); END PROCEDURE; grant execute on procedure "public".sysdbopen() to public as "public"; Есть процедура informix.sysdbopen() CREATE PROCEDURE informix.sysdbopen() define ret_val varchar(15); if user like ('adm%') then execute function sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret_val; end if; if user like ('name%') then execute function sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret_val; end if; END PROCEDURE; grant execute on procedure 'informix'.sysdbopen() to public; grant execute on procedure 'informix'.sysdbopen() to 'name'; Соединяюсь пользователем adm1 c правами DBA - трассировка включается и все работает, подключаюсь пользователем name с правами не DBA - коннект проходит,сессия работает.все хорошо,но трассировка не включена. В чем причина? Если я создаю и выполняю CREATE dba function informix.set_tracing_on() define ret varchar execute procedure sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret return ret END PROCEDURE; grant execute on informix.set_tracing_on to public; то для DBA возвращается "S",а для простого пользователя "N". Что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:36 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Журавлев Дениса кстати, зачем там task Это не sql, это параметры процедуры task из базы sysadmin. Есть еще кстати процедура admin, она возвращает не строку, а число. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:55 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeVЕсли я создаю и выполняю CREATE dba function informix.set_tracing_on() define ret varchar execute procedure sysadmin:task("set sql user tracing on",DBINFO('sessionid')) into ret return ret END PROCEDURE; grant execute on informix.set_tracing_on to public; то для DBA возвращается "S",а для простого пользователя "N". Что я делаю не так? define ret varchar(255) - и Вы узнаете ответ а лучше даже define ret lvarchar, потому что именно этот тип данных возвращает процедура ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 16:58 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Тан, для DBA SQL user tracing on for sid(171704). для простого пользователя Not authorized to run command (set sql user tracin как авторизовать этого пользователя на выполнение этой команды? спасибо большое ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 17:02 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeVдля DBA SQL user tracing on for sid(171704). для простого пользователя Not authorized to run command (set sql user tracin Собственно то, о чем говорилось в моей ссылке. Обычному юзеру выдать права на tracing не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 17:17 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Daugava, нашел как выйти из ситуации: можно просто включить этого пользователя в лист пользователей,для которых всегда будет включена трассировка,выполнив из-под информикса EXECUTE FUNCTION task("set sql tracing user add", "username"); и для этого пользователя всегда будет включена трасса,несмотря на его права ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 17:26 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
только есть одно большое но! при рестарте БД почему-то пропадают настройки списка юзеров почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2011, 18:01 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeVтолько есть одно большое но! при рестарте БД почему-то пропадают настройки списка юзеров почему? потому что настройки трассировки прописываются в onconfig ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2011, 16:01 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
Тан, как прописать юзеров в онконфиг,для которых будет включена трасса? подскажите плиз ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 14:20 |
|
не получается выполнить функцию.не понимаю почему?
|
|||
---|---|---|---|
#18+
LudeVТан, как прописать юзеров в онконфиг,для которых будет включена трасса? подскажите плиз http://publib.boulder.ibm.com/infocenter/idshelp/v115/topic/com.ibm.adref.doc/ids_adr_0163.htm#ids_adr_0163 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 11:52 |
|
|
start [/forum/topic.php?fid=44&msg=37536468&tid=1607227]: |
0ms |
get settings: |
23ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
442ms |
get tp. blocked users: |
1ms |
others: | 36ms |
total: | 573ms |
0 / 0 |