在SQL Server中,这会产生多少事务?SQL Server:事务如何工作
DECLARE @deleted BIGINT
SET @deleted = 100000
WHILE @deleted = 100000
BEGIN
DELETE TOP(100000) FROM MYTABLE WITH (ROWLOCK)
where Col1 = 7048 and COL2 = 39727 and Col3 = 0
SET @deleted = (SELECT @@ROWCOUNT)
END
如果我在运行10分钟后取消,它是否需要回滚?
如果我不想在取消之后回滚一个迭代,会添加一个正在处理的事务和结束事务吗?
如果我把它放在存储过程中会有什么区别吗?
存储的proc不会有任何区别。而且,正如目前所写,所有删除的行都将在单个事务中。您需要在BEGIN/END中开始/提交以限制事务范围大小,这会影响您的回滚能力。 – Joe 2010-10-05 18:28:27
你为什么要设置rowlock提示?这张桌子上的聚集索引在哪里?这看起来像是应该花10分钟才能完成的事情吗? – Sage 2010-10-05 18:29:07