Сеанс SQL Server

Что считается сессией на сервере sql. Я пытаюсь использовать sp_getapplock, и в документации указано:

Замки, размещенные на ресурсе, связаны либо с текущей транзакцией, либо с текущим сеансом. Блокировки, связанные с текущей транзакцией, освобождаются, когда транзакция совершает или откатывается. Блокировки, связанные с сеансом, освобождаются при выходе из сеанса. Когда сервер по какой-либо причине отключается, все блокировки освобождаются.

'Блокировки, связанные с сеансом, освобождаются при завершении сеанса связи.

Мне нужно знать, что считается сеансом. подключение с использованием студии управления - это сеанс в базе данных; использование asp.net для подключения к серверу sql также создает сеанс.

Что делать, если я использую ADO.net и пул соединений, каждое соединение в пуле соединений считается другим сеансом?

Ответы

Ответ 1

При объединении пулов обратите внимание, что sp_reset_connection вызывается между каждым переназначением повторно используемого соединения. Этот SO-сообщение подробно описывает очистку, выполненную sp_reset_connection.

Edit В контексте вашего вопроса sp_reset_connection "Frees приобрел блокировки".

Ответ 2

Если я использую ADO.net и пул соединений, каждое соединение в пуле соединений считается другим сеансом?

Сорт. Почти каждый раз, когда вы открываете/закрываете новое соединение, это один сеанс. Однако одна из "функций" пула соединений заключается в том, что он не всегда открывает/закрывает команду, и когда он видит, что вы открываете и закрываете связку соединений, он будет использовать одно соединение за кулисами, который, я считаю, приводит к одному сеансу на сервере sql.

Ответ 3

@LockOwner sp_getapplock относится к тому, когда он выпущен:

  • "Сессия": на конце сеанса
  • "Транзакция": на COMMIT или ROLLBACK

В принципе, SPID в sys.sysprocesses является "сеансом"