|
Sybase
|
|
|
|
|
Продукты
|
|
|
|
|
Сообщества
|
|
|
|
|
Меню
|
|
|
|
|
Вход
|
|
|
|
|
Рассылка
|
|
|
|
|
Статистика
|
|
|
|
|
Как заставить клиента завершить соединение на TSQL
|
Как заставить клиента завершить соединение на TSQLПриводимый прием описан в книге Rob Verschoor-а "Tips, Tricks & Recipes for Sybase ASE". Собственно, ему и спасибо.
В Sybase ASE есть недокументированная функция, позволяющая серверу разорвать соединение с клиентской машиной.
syb_quit()
При ее использовании соединение сервера с клиентом разрывается по инициативе сервера и клиент не сможет далее ничего выполнить до тех пор, пока заново не установит соединение.
Использование :
Когда надо разорвать соединение, напишите
select syb_quit()
Функцию можно использовать везде, где можно использовать функции - в процедурах, триггерах, просто в запросах.
Функция не обладает никакими отрицательными эффектами, кроме основного, и ее применение не несет никаких отрицательных последствий.
Одно из самых интересных применений функции - досрочное завершение скрипта на TSQL, состоящего из нескольких батчей.
Например:
print 'Starting patch #1209 installation'
go
if (select last_patch_no from MY_SYSTEM_INFO ) >= 1209
print 'Patch #1209 is already installed, no need to install it again.'
go
if (select last_patch_no from MY_SYSTEM_INFO ) >= 1209
select syb_quit()
go
create table aaa (...)
go
alter table aaa add constraint ....
go
print 'Patch #1209 has been installed'
go
Можно придумать еще много применений для этой функции - в logon triggers,
в простых триггерах и т.п.
Внимание! Это недокументированная функция, поэтому код с ее применением нужно тщательно тестировать для каждой версии ASE. Также помните, что ни Sybase, ни автор данного FAQ не могут нести ответственность за правильную или неправильную работу этой функции.
Помните также, что при разрыве соединения все незавершенные транзакции будут откачены сервером !
|
Дата публикации: Wednesday 29 March 2006 12:41:57 Материал прочитан: 11005 раз(а) [ Назад ] |
|
|
|
|
|
|
Copyright©2005 . Все права защищены.
|