Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Номер процесса SQL Server
|
|||
|---|---|---|---|
|
#18+
Возникла такая проблема. Мне необходимо получить уникальную информацию о сессии работы с базой данных. Единственной (???) уникальной информацией о сессии является @@SPID. И все бы хорошо, но при разрыве связи сервер не выдавая никаких предупреждений изменяет номер процесса. Скорее всего сервер просто убивает процесс, а клиент АДО без предупреждения восстанавливает соединение. Вопрос 1. Действительно ли @@SPID - единственная уникальная информация о сессии? Вопрос 2. Как отследить изменение @@SPID? Возможно ли запретить восстановление связи по умолчанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2001, 07:50 |
|
||
|
Номер процесса SQL Server
|
|||
|---|---|---|---|
|
#18+
Уточните, что вы подразумеваете под словом "сессия". Один пользователь по определению может открыть одновременно несколько сессий. И как SQL-сервер должен догадаться, какие из 10 открытых сессий являются продолжениями 10 сессий, прерванных час (год, секунду) назад? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2001, 13:10 |
|
||
|
Номер процесса SQL Server
|
|||
|---|---|---|---|
|
#18+
Уточняю вопрос 1. Под словом сессия я в данном контексте понимаю один ADO.Connection. Естественно один пользователь может иметь несколько соединений с сервером, но мне нужна информация именно о соединении, а не о пользователе. 2. Абсолютно ясно, что сервер не может догадаться какая сессия восстанавливается. Я и не ставлю такой задачи. Я пытаюсь либо запретить автоматическое восстановление связи (плохой вариант, скорее всего делается на клиенте), либо получить сообщение об изменении номера процесса (вариант идеальный, но только как его реализовать?). Сервер не догадывается, какая сессия восстанавливается, если в пакетах между клиентом и сервером не передается недокументированная информация. Может конечно стоит покопать в этом направлении, но изучив содержимое передаваемых пакетов, ничего похожего на старый номер процесса на сервере я не нашел. Вот такая проблема. У кого какие идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2001, 15:12 |
|
||
|
Номер процесса SQL Server
|
|||
|---|---|---|---|
|
#18+
Так а какой в этом смысл во всем? Я так понимаю, есть какая то информация которая должна быть доступна только через данное соединение. Получайте тогда в начале работе некий уникалный идентификатор например через newid() или свойство identity в специальной таблице, запоминайте его в переменных приложения и когда надо работать с этой информацией, доступной только этой "сессии", передавайте это значение SQL серверу как параметр. Это не будет никак зависеть от обрывов связи и геморроя не будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2001, 15:57 |
|
||
|
Номер процесса SQL Server
|
|||
|---|---|---|---|
|
#18+
To Dmitry Вот я к такому варианту сейчас и пришел, но тогда прийдется изменять работу уже готовой подсистемы ведения логов и сервиса Undo, т.к. они работают на триггерах, а из триггера получить передаваемый в хранимую процедуру GUID без изменения структуры таблиц не получится. Так ведь? Вот я и подумал, а нет ли возможности запретить автоматический реконнект клиента или получить сообщение от сервера об изменении номера процесса. Можно или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2001, 07:07 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1825083]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 433ms |

| 0 / 0 |
