0

在SQL Server中,我有一個包含1200萬行和5.6 GB存儲的表(dbo.MYTABLE)。長期更新完成後SQL Server使用的事務日誌空間不會減少

我需要更新每個記錄的varchar(150)字段。

我在WHILE循環中執行UPDATE操作,每次迭代更新50K行。

交易日誌似乎不是每次迭代後免費並不斷增長。 即使在UPDATE過程完成後,也不會返回事務日誌空間。

我的問題是,爲什麼使用的事務日誌空間永遠不會降低,即使UPDATE完成。代碼如下:

DECLARE @MAX_COUNT INT; 
DECLARE @COUNT INT; 
DECLARE @INC INT; 

SET @COUNT = 0; 
SET @INC = 50000; 

SELECT @MAX_COUNT=MAX(ID) FROM dbo.MYTABLE(NOLOCK) 
WHILE @COUNT <= @MAX_COUNT 
BEGIN 

    UPDATE dbo.MYTABLE 
    SET NEW_NAME = REPLACE(NAME,' X','Y')) 
    WHERE ID > @COUNT AND ID<=(@COUNT + @INC) 

    SET @COUNT = (@COUNT + @INC) 
END 
+0

是您在簡單恢復或完全恢復模式的數據庫? –

+0

有沒有開始交易...提交纏繞此,所以這仍然被視爲一個大交易,並將被記錄。 –

+0

@ G.Davison,數據庫處於完全恢復模式。 –

回答

0

如果你不這樣做事務日誌備份,切換到簡單:

USE [master] 
GO 
ALTER DATABASE [YOUR_DB] SET RECOVERY SIMPLE WITH NO_WAIT 
GO