sql-server – 如何在SQL Server 2005中锁定表,我该怎么办?
发布时间:2020-12-12 16:34:17 所属栏目:MsSql教程 来源:网络整理
导读:这一个将会解释一下.我所做的是在SQL Server 2005中创建一个特定的自定义消息队列.我有一个包含消息的表,其中包含确认和完成的时间戳.调用者执行以获取其队列中的下一个消息的存储过程也确认该消息.到现在为止还挺好.那么,如果系统正在经历大量的事务(每分钟
这一个将会解释一下.我所做的是在SQL Server 2005中创建一个特定的自定义消息队列.我有一个包含消息的表,其中包含确认和完成的时间戳.调用者执行以获取其队列中的下一个消息的存储过程也确认该消息.到现在为止还挺好.那么,如果系统正在经历大量的事务(每分钟数千次),那么另一个执行存储过程的消息是不可能的,而另一个则是自己准备的?通过在存储过程中显示我的SQL代码来帮助我:
--Grab the next message id declare @MessageId uniqueidentifier set @MessageId = (select top(1) ActionMessageId from UnacknowledgedDemands); --Acknowledge the message update ActionMessages set AcknowledgedTime = getdate() where ActionMessageId = @MessageId --Select the entire message ... ... 在上面的代码中,不能同时运行另一个存储过程获得相同的id,并尝试同时确认它?我可以(或应该)实现某种锁定,以防止另一个存储过程确认另一个存储过程正在查询的消息? 哇,有没有这个有意义?说出来有点难 解决方法这样的东西--Grab the next message id begin tran declare @MessageId uniqueidentifier select top 1 @MessageId = ActionMessageId from UnacknowledgedDemands with(holdlock,updlock); --Acknowledge the message update ActionMessages set AcknowledgedTime = getdate() where ActionMessageId = @MessageId -- some error checking commit tran --Select the entire message ... ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sqlserver 与 SYBASE , ORACLE,DB2 之间的数据类
- sql-server – 如何在SQL Server中删除触发器?
- sql – 基于Postgres触发器的插入重定向而不会破
- 如何从tsql(sql 2005)中的utc datetime计算本地d
- SqlServer 2000和2005存储过程破解
- SqlServer通用的分页存储过程
- MySQL启动1053错误解决方法
- active-directory – SQL Server身份验证的IIS7.
- SqlServer 错误:"SQL Server 无法生成 FRun
- SQLServerException:通过端口 1433 连接到主机
热点阅读