master.dbo.sysprocesses 中的哪一列对于会话来说是唯一的?

发布于 2024-11-04 20:08:00 字数 402 浏览 2 评论 0原文

我正在创建 SQL 机制(在 MSSQL 2005 中),该机制一次只允许一个用户在某个表中设置字段。如果设置了该字段,则其他人无法清除它(设置为 NULL)。如果不是,则该字段将设置为用户会话特有的内容。作为一个好的候选人,master.dbo.sysprocesses.sid 正在寻找我,但我不确定。

我需要确保当用户的客户端应用程序(将使用此机制)崩溃时,该字段将被清除,以便其他用户能够使用它。我正在考虑一些清除工作,它将检查设置此字段的用户会话是否处于活动状态,如果不是,则清除它(当然仅当该字段不为空时)。

每个用户会话的 master.dbo.sysprocesses 中是否有一个唯一的列,而无需稍后重复使用相同的值?

非常感谢

I'm creating SQL mechanism (in MSSQL 2005) which allows only one user at time set the field in certain table. If this field is set, no one else can clear it (set to NULL). If not, this field is set to something unique for the user's session. As a good candidate master.dbo.sysprocesses.sid looks for me, but I'm not sure with it.

I need to ensure when the user's client application (which will use this mechanism) crashes, the field will be cleared so another users will be able to use it. I'm thinking about some clearing job, which will check if the user's session which set this field is active yet and if not, then clear it (of course only when the field is not NULL).

Is there a unique column in master.dbo.sysprocesses for each user session without reusing the same value later on ?

Thanks a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

对不⑦ 2024-11-11 20:08:00

spid 识别任何连接/会话。不多也不少。其他会话不会有该 spid。

您可以使用 @@SPID 代替 sysprocesses。

编辑: sid 不是唯一的,因为一个用户可以有多个正在进行的会话。

我认为我们需要更多信息来提供建议。

我担心你的应用程序会经常崩溃,需要这个解决方案来清除这种独占锁定...

Edit2:login_time 根据评论也可以使用

spid identifies any connection/session. No more, no less. No other session will have that spid.

And you can use @@SPID for that instead rather than sysprocesses.

Edit: sid is not unique because a user can have several sessions ongoing.

I reckon we need more info to offer a suggestion.

I am concerned that your app will crash often enough to need this solution to clear such exclusive locking...

Edit2: login_time would be usable too based on comments

少女净妖师 2024-11-11 20:08:00

spid 并不是唯一的。有时我会在我的服务器上看到 10 个或更多相等的 spid(这是由于并行性而发生的)。

尝试 spid + kpid。

A spid is not unique. Sometimes I see 10 or more equal spids on my server (it happens because of parallelism).

Try spid + kpid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文