Сеанс SQL Server - PullRequest
       7

Сеанс SQL Server

15 голосов
/ 22 сентября 2011

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 22 сентября 2011

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

Редактировать В контексте вашего вопроса sp_reset_connection "Освобождает приобретенные блокировки".

3 голосов
/ 22 сентября 2011

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

Вроде. Почти каждый раз, когда вы открываете / закрываете новое соединение, это один сеанс. Тем не менее, одна из «особенностей» пула соединений заключается в том, что он не всегда открывает / закрывает по команде, и когда он видит, что вы открываете и закрываете несколько соединений повторно, он будет использовать одно закулисное соединение, который я считаю, приводит к одной сессии на сервере SQL.

0 голосов
/ 22 сентября 2011

@LockOwner sp_getapplock ссылается на то, когда он был освобожден:

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

По сути, SPID в процессах sys.sys - это "сеанс"

...