1
3
您基本上是在描述基于队列的经典工作流,并且应该考虑使用 queue . 为了便于讨论,以下是您如何实现自己的愿望:
问题的关键是使用正确的锁提示,这种问题确实需要显式的锁提示来解决。updlock将充当“claim”锁。rowlock创建正确的粒度,防止服务器“优化”页面锁。readpass允许您跳过声明的资源。在行上放置updlock将锁定该行,并允许您稍后更新它,但会阻止其他操作,如将在锁定行上阻塞的普通读提交选择。不过,您的想法是无论如何都要更新行,这将放置一个不可避免的X锁。如果您想保持桌子的可用性,可以使用
app locks
相反,但是很难正确完成。您需要在资源的字符串描述符上请求一个应用程序锁,比如键值,或者
|
2
3
SQL Server有一个名为 sp_getapplock . 文档将其描述为
客户机可以竞争已命名的锁(您给它指定您想要的名称),一旦锁定,就执行所需的操作。如果客户端崩溃,锁将自动释放。要以编程方式释放锁,可以调用 sp_releaseapplock 使用AppLocks的可定位解决方案
|
ybou · 需要帮助从SQL 2005查询中删除过时的=*连接运算符 7 年前 |
Robert · 将多个分隔符分隔的字段视为不同的行 8 年前 |
hud · 执行存储过程会导致错误 8 年前 |
Gonzalo · 如何将存储过程的结果插入到新表中? 9 年前 |