1

一度に 1 人のユーザーのみが特定のテーブルのフィールドを設定できるようにする SQL メカニズム (MSSQL 2005) を作成しています。このフィールドが設定されている場合、他の誰もそれをクリアできません (NULL に設定)。そうでない場合、このフィールドは に設定されsomething unique for the user's sessionます。良い候補master.dbo.sysprocesses.sidとして私を探しますが、よくわかりません。

ユーザーのクライアント アプリケーション (このメカニズムを使用する) がクラッシュしたときに、フィールドがクリアされ、別のユーザーが使用できるようにする必要があります。このフィールドを設定したユーザーのセッションがまだアクティブかどうかを確認し、そうでない場合はクリアします(もちろん、フィールドがNULLでない場合のみ)。

後で同じ値を再利用せずに、ユーザー セッションごとに master.dbo.sysprocesses に一意の列がありますか?

どうもありがとう

4

2 に答える 2

1

spid は、接続/セッションを識別します。それ以上でもそれ以下でもありません。他のセッションにはその spid はありません。

また、sysprocesses の代わりに@@SPIDを使用できます。

編集: ユーザーは複数のセッションを継続できるため、sid は一意ではありません。

提案するにはもっと情報が必要だと思います。

このような排他的ロックをクリアするためにこのソリューションが必要になるほど頻繁にアプリがクラッシュするのではないかと心配しています...

Edit2: コメントに基づいて login_time も使用可能

于 2011-05-04T11:03:36.943 に答える