在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