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


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