|
|
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
Подскажите, плиз, что я делаю не так: Я хочу, чтобы при отключении юзера от базы чистилась одна табличка, чтобы из нее удалялись данные этой сессии. Сделал вот что: create procedure logoff() define osid like sessions.sid; select dbinfo('sessionid') into osid from systables where tabname='systables'; if osid is not null then delete from sessions where sid=osid; end if; return; end procedure; revoke execute on logoff from public; update statistics for procedure logoff; drop procedure public.sysdbclose; create procedure public.sysdbclose() execute procedure logoff(); end procedure; И... ничего не происходит - записи из таблицы sessions не удаляются. Где недочитал TFM ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 18:56 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
falcon111 drop procedure public.sysdbclose; create procedure public.sysdbclose() А в какой версии это вообще появилось ? В 9.3 я такого не видел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 20:05 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
vasilis falcon111 drop procedure public.sysdbclose; create procedure public.sysdbclose() А в какой версии это вообще появилось ? В 9.3 я такого не видел... Кстати, забыл сказать, что сервер 9.4ТС3 А насчет где - читаю вот это: ct1sqna.pdf IBM informix guide to SQL syntax IBM Informix Extended Parallel Server, v8.4 IBM Informix Dynamic Server, v9.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 20:53 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
falcon111 Кстати, забыл сказать, что сервер 9.4ТС3 А насчет где - читаю вот это: ct1sqna.pdf IBM informix guide to SQL syntax IBM Informix Extended Parallel Server, v8.4 IBM Informix Dynamic Server, v9.4 XPS - Identifies information or syntax that is specific to IBM Informix Extended Parallel Server. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 11:53 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
vasilis falcon111 Кстати, забыл сказать, что сервер 9.4ТС3 А насчет где - читаю вот это: ct1sqna.pdf IBM informix guide to SQL syntax IBM Informix Extended Parallel Server, v8.4 IBM Informix Dynamic Server, v9.4 XPS - Identifies information or syntax that is specific to IBM Informix Extended Parallel Server. Плохо и не внимательно читаешь, ведь там (в Guide to SQL syntax) слева от текста, относящемуся к sysdbopen sysdbclose крупно нарисован значок XPS, который обозначает, что эта информация специфична ТОЛЬКО для версии XPS. Мда, облом...обидно бывает, когда тратишь время на банальные вещи :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 11:59 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
vasilisПлохо и не внимательно читаешь, ведь там (в Guide to SQL syntax) слева от текста, относящемуся к sysdbopen sysdbclose крупно нарисован значок XPS, который обозначает, что эта информация специфична ТОЛЬКО для версии XPS. Мда, облом...обидно бывает, когда тратишь время на банальные вещи :( Посыпаю голову пеплом. Круто протормозил. :( Еще вопрос возник сегодня: Для взаимодействия базы данных и ПО, отрабатывающего изменения в базе, я написал крохотную программку. Для пущего бестроты ее запуска - без рантайма и прочего, в ней 45 байт собственно кода получилось:) Ее назначение - открыть named event object и "посигналить" в него, чтобы другое ПО "проснулось" и выбрало данные с сервера для работы. На информиксе есть процедура, она вызывает этот мой костылик через system 'filename.exe'; И все бы хорошо, но этот костыль запускается только если sql работает из-под аккаунта информикса. СтОит запустить процедуру из-под любого "рабочего" логина - system возвращает ошибку -668. В докции сказано, что system выполняется из-под аккаунта того, кем вы залогинились на сервер, чтобы были полномочия. И еще говорится, чтобы у информикса были advanced права - там перечислены какие. Права информикса в полиси проверил - есть. А что нужно аккаунту, чтобы из-под него запускался system - не понял. Как эту -668 побороть, какие именно права пользователя или что там нужно? Никто с такой проблемой не сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 17:45 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
DBA_Tools\DOC\FAQ_Informix_Programming.txt ... --------------------------------------------------------------- * Как выполнить в хранимой процедуре команды ОС MS Windows NT ? --------------------------------------------------------------- To execute system commands in stored procedures, logon to the database server with your password. If you have not explicitly connected to the database server with a valid username and password, the error returned is -668. This error occurs for both DB-Access and ESQL/C applications. The "informix" user must have the following Advanced User Rights : * Act as part of the operating system * Increase quotas * Replace a process level token System commands should contain the absolute path of the script or the executable that needs to be executed; for example: system "c:\temp\test.exe" If you wish to redirect the output of the command to files, the command line should include the command shell; for example: system "cmd.exe /C c:\temp\test.exe > c:\temp\stdout.out c:\temp\stderr.out" When you include cmd.exe in the system command, you must specify the /C option. Without this option, the command shell will not exit, which causes the database server to wait indefinitely. The database server will wait for the outcome of the execution of a system command. Pay close attention to system commands defined in stored procedures. The client application will hang if the system command never completes or never returns . Windows-Specific Information for NT You can connect to Informix Dynamic Server as any user. You do not need to have the "Logon Locally" right for that. However, to be able to run a system command in a stored procedure, you need have the "Logon Locally" right . User Manager, a Windows NT Administrator Tool, can assign this right. A Windows NT workstation automatically assigns this right to new users. On a Windows NT server, the Administrator needs to assign this right explicitly. ------------------------------------------- И еще для информации кусочек из того же FAQ: (Daugava): Да чего там "system" описывать, он прост как паровоз, но фактически это путь через "ж..", т.е. через вызов внешней программы. Если это необходимо для промышленного решения, в особенности в OLTP задаче, сразу в сад. ... Говоря про использование "system", я констатировал, что это единственная возможность в случае 7-ки, но я не утверждал, что ее стоит использовать. Ибо, соединенение, вызванное через "system" будет новым, т.е. вы не сможете обмениваться данными через временные таблицы. Вызов внешнего приложения отрицательно скажется на производительности сервера. ... На счет не работоспособности "SYSTEM" все очень сильно зависит от платформы, на которой стоит informix. ----- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 19:05 |
|
||
|
Не могу заставить работать public.sysdbclose()
|
|||
|---|---|---|---|
|
#18+
vasilis(Daugava): Да чего там "system" описывать, он прост как паровоз, но фактически это путь через "ж..", т.е. через вызов внешней программы. Если это необходимо для промышленного решения, в особенности в OLTP задаче, сразу в сад. ... Говоря про использование "system", я констатировал, что это единственная возможность в случае 7-ки, но я не утверждал, что ее стоит использовать. Ибо, соединенение, вызванное через "system" будет новым, т.е. вы не сможете обмениваться данными через временные таблицы. Вызов внешнего приложения отрицательно скажется на производительности сервера. ... На счет не работоспособности "SYSTEM" все очень сильно зависит от платформы, на которой стоит informix. ----- Насчет тормознутости все понятно. Мне оно в общем-то нужно было только для проверки, чтобы проверить саму идею, и стало интересно, что информиксу нужно, чтобы оно работало из-под любого пользователя. А для работы я просто сделал ДЛЛ-ку, подключил ее как UDR, и вызываю ее через execute procedure. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 02:15 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33186514&tid=1608961]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 314ms |

| 0 / 0 |
