-1

我有一份工作要更新一个表 20 分钟,此时我无法自然地更新它的任何行。

有没有办法做到这一点?

这项工作可以更长,但我必须继续更新表格。

另一方面,如果作业在作业期间出现错误,作业应该回滚。

谢谢..

4

2 回答 2

0

将作业拆分为单独的事务。锁在像 SQL Server 这样的专业 DBMS 中的工作方式是,它们会根据需要升级到更高的级别。一旦查询访问了很多页面,它就很自然地被更新为只读表锁。在保持事务完整性的同时避免这种情况的唯一方法是将其拆分为较小的作业。

于 2013-05-10T15:34:08.430 回答
0

正如 Niels 指出的那样,您应该尝试分批更新表,明确提交事务中的每个批次。如果您创建了足够多的锁来保证表锁,那么您很可能也增加了事务日志。如有必要,它可能值得检查并缩小到更合理的尺寸。

或者,您可以尝试启用“根据锁数禁用锁升级”的跟踪标志 1224 或 1211 - http://msdn.microsoft.com/en-us/library/ms188396.aspx

于 2013-05-10T15:41:17.057 回答