Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Номер процесса SQL Server / 5 сообщений из 5, страница 1 из 1
05.11.2001, 07:50
    #32016545
Yuri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Номер процесса SQL Server
Возникла такая проблема.
Мне необходимо получить уникальную информацию о сессии работы с базой данных. Единственной (???)
уникальной информацией о сессии является @@SPID. И все бы хорошо, но при разрыве связи сервер
не выдавая никаких предупреждений изменяет номер процесса.
Скорее всего сервер просто убивает процесс, а клиент АДО без предупреждения восстанавливает соединение.
Вопрос 1. Действительно ли @@SPID - единственная уникальная информация о сессии?
Вопрос 2. Как отследить изменение @@SPID? Возможно ли запретить восстановление связи по умолчанию?
...
Рейтинг: 0 / 0
05.11.2001, 13:10
    #32016574
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Номер процесса SQL Server
Уточните, что вы подразумеваете под словом "сессия". Один пользователь по определению может открыть одновременно несколько сессий. И как SQL-сервер должен догадаться, какие из 10 открытых сессий являются продолжениями 10 сессий, прерванных час (год, секунду) назад?
...
Рейтинг: 0 / 0
05.11.2001, 15:12
    #32016593
Yuri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Номер процесса SQL Server
Уточняю вопрос
1. Под словом сессия я в данном контексте понимаю один ADO.Connection. Естественно один пользователь может иметь несколько соединений с сервером, но мне нужна информация именно о соединении, а не о пользователе.
2. Абсолютно ясно, что сервер не может догадаться какая сессия восстанавливается. Я и не ставлю такой задачи. Я пытаюсь либо запретить автоматическое восстановление связи (плохой вариант, скорее всего делается на клиенте), либо получить сообщение об изменении номера процесса (вариант идеальный, но только как его реализовать?).
Сервер не догадывается, какая сессия восстанавливается, если в пакетах между клиентом и сервером не передается недокументированная информация. Может конечно стоит покопать в этом направлении, но изучив содержимое передаваемых пакетов, ничего похожего на старый номер процесса на сервере я не нашел. Вот такая проблема. У кого какие идеи?
...
Рейтинг: 0 / 0
05.11.2001, 15:57
    #32016600
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Номер процесса SQL Server
Так а какой в этом смысл во всем?
Я так понимаю, есть какая то информация которая должна быть доступна только через данное соединение. Получайте тогда в начале работе некий уникалный идентификатор например через newid() или свойство identity в специальной таблице, запоминайте его в переменных приложения и когда надо работать с этой информацией, доступной только этой "сессии", передавайте это значение SQL серверу как параметр. Это не будет никак зависеть от обрывов связи и геморроя не будет...
...
Рейтинг: 0 / 0
06.11.2001, 07:07
    #32016608
Yuri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Номер процесса SQL Server
To Dmitry
Вот я к такому варианту сейчас и пришел, но тогда прийдется изменять работу уже готовой подсистемы ведения логов и сервиса Undo, т.к. они работают на триггерах, а из триггера получить передаваемый в хранимую процедуру GUID без изменения структуры таблиц не получится. Так ведь?
Вот я и подумал, а нет ли возможности запретить автоматический реконнект клиента или получить сообщение от сервера об изменении номера процесса. Можно или нет?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Номер процесса SQL Server / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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