powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / не получается выполнить функцию.не понимаю почему?
24 сообщений из 24, страница 1 из 1
не получается выполнить функцию.не понимаю почему?
    #37529081
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

изменил процедуру 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 пишет,что нет прав на коннект.

Почему эта функция может выполняться только пользователем из группы,а не всеми,кому даны права?
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529088
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LudeV,

точнее,я догадываюсь почему: т.к. это внешняя процедура,то она лежит где-то в ОС,а на выполнение на уровне ОС выставлены права только этой группе.

подскажите плиз где найти эту процедуру или какому файлу нужно дать права необходимые?


спасибо огромное
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529112
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LudeV,

скорее всего это rootdbs, но если я дам файлу rootdbs права отличные от 660,то ведь будет ошибка!

The chunk '**/rootdbs' must have READ/WRITE permissions for owner and group (660)
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529204
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
11021425




авторскорее всего это rootdbs, но если я дам файлу rootdbs права отличные от 660,то ведь будет ошибка!

The chunk '**/rootdbs' must have READ/WRITE permissions for owner and group (660) Ох, мне бы такой травы, я бы захватил галактику.
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529258
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис,

не выполняется процедура

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
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529276
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Энциклопедии Юных Сурков сказано
You must be connected to the sysadmin database as user informix or another authorized user.
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529295
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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;

и выполните от обычного пользователя. Результат покажите нам.
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529327
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис,

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
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529343
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LudeV,

дал права на коннект к базе sysadmin для этого пользователя,теперь все хорошо.


спасибо всем большое
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529352
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кстати, зачем там task

попробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE dba function informix.set_tracing_on()
returning char( 50 )
define ret varchar;
execute immediate 'set sql user tracing on '||DBINFO('sessionid')) into ret;
return ret;
END function;
grant execute on informix.set_tracing_on to public;
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529570
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис,

не выполняется.

процедура создалась нормально,а вот при ее вызове ругается на синтаксическую ошибку
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529594
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LudeVЖуравлев Денис,

не выполняется.

процедура создалась нормально,а вот при ее вызове ругается на синтаксическую ошибкуу меня скобка закрывающая лишняя, вы так и создали?
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529596
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вообще кстати:

Код: plaintext
1.
2.
3.
4.
5.
CREATE dba procedure informix.set_tracing_on()
execute immediate 'set sql user tracing on '||DBINFO('sessionid');
END procedure;
grant execute on informix.set_tracing_on to public; 

...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529670
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис,

скобку убрал и делал процедуру - все тоже самое.

Я вообще что-то уже запустался, помогите плиз.

есть процедура 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".

Что я делаю не так?
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529721
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Дениса кстати, зачем там task

Это не sql, это параметры процедуры task из базы sysadmin.
Есть еще кстати процедура admin, она возвращает не строку, а число.
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529728
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, потому что именно этот тип данных возвращает процедура
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529735
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тан,

для DBA SQL user tracing on for sid(171704).
для простого пользователя Not authorized to run command (set sql user tracin


как авторизовать этого пользователя на выполнение этой команды?


спасибо большое
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529775
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LudeVдля DBA SQL user tracing on for sid(171704).
для простого пользователя Not authorized to run command (set sql user tracin

Собственно то, о чем говорилось в моей ссылке.
Обычному юзеру выдать права на tracing не выйдет.
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529801
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Daugava,

нашел как выйти из ситуации: можно просто включить этого пользователя в лист пользователей,для которых всегда будет включена трассировка,выполнив из-под информикса

EXECUTE FUNCTION task("set sql tracing user add", "username");

и для этого пользователя всегда будет включена трасса,несмотря на его права
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37529909
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
только есть одно большое но!

при рестарте БД почему-то пропадают настройки списка юзеров


почему?
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37531791
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LudeVтолько есть одно большое но!

при рестарте БД почему-то пропадают настройки списка юзеров


почему?
потому что настройки трассировки прописываются в onconfig
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37533520
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тан,

как прописать юзеров в онконфиг,для которых будет включена трасса?

подскажите плиз
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37536468
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LudeVТан,

как прописать юзеров в онконфиг,для которых будет включена трасса?

подскажите плиз
http://publib.boulder.ibm.com/infocenter/idshelp/v115/topic/com.ibm.adref.doc/ids_adr_0163.htm#ids_adr_0163
...
Рейтинг: 0 / 0
не получается выполнить функцию.не понимаю почему?
    #37552523
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тан,

SQLTRACE level=low,ntraces=20000,size=2,mode=user,перечисление или как указать необходимых юзеров?

попробовать нет возможности:(
спасибо большое
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / не получается выполнить функцию.не понимаю почему?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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