Какой столбец из master.dbo.sysprocesses является уникальным для сеанса? - PullRequest
1 голос
/ 04 мая 2011

Я создаю механизм SQL (в MSSQL 2005), который позволяет только одному пользователю одновременно устанавливать поле в определенной таблице. Если это поле установлено, никто больше не сможет его очистить (установите в NULL). Если нет, это поле установлено на something unique for the user's session. Как хороший кандидат master.dbo.sysprocesses.sid ищет меня, но я не уверен в этом.

Мне нужно убедиться, что при сбое клиентского приложения пользователя (которое будет использовать этот механизм) поле будет очищено, чтобы другие пользователи могли его использовать. Я думаю о некотором задании очистки, которое проверит, активен ли еще сеанс пользователя, который установил это поле, а если нет, то очистит его (конечно, только когда поле не NULL).

Существует ли уникальный столбец в процессах master.dbo.sys для каждого сеанса пользователя без повторного использования того же значения в дальнейшем?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 04 мая 2011

spid идентифицирует любое соединение / сеанс.Не больше, не меньше.Ни у одного другого сеанса этот spid не будет.

И вместо этого вы можете использовать @@ SPID вместо sysprocesses.

Редактировать: sid не уникален, потому что пользователь можетУ меня несколько сеансов.

Мне кажется, нам нужно больше информации, чтобы предложить предложение.

Я обеспокоен тем, что ваше приложение будет зависать достаточно часто, чтобы это решение могло снять такую ​​эксклюзивную блокировку ...

Редактировать2: время входа в систему будет также использоваться на основе комментариев

0 голосов
/ 24 января 2013

Спид не уникален. Иногда я вижу 10 или более равных спидов на моем сервере (это происходит из-за параллелизма).

Попробуйте spid + kpid.

...