2017-01-03 67 views
0

爲什麼我的SQL事務日誌文件不能自動增長?

我一直在運行一個特別大的查詢,生成數百萬條記錄的問題被插入到表中。每次運行查詢時,我都會收到一個報告事務日誌文件已滿的錯誤。

我設法得到一個測試查詢以減少一組結果運行,並使用SELECT INTO而不是INSERT作爲預建表。這組縮減的結果產生了20 gb的表格,838,978,560行。

當試圖INSERT到預建表,我也嘗試使用它和沒有一個羣集索引。兩個失敗。

服務器設置

服務器運行SQL Server 2005(完全不表達)。 正在使用的dbase被設置爲SIMPLE進行恢復,並且文件所在的驅動器上有可用空間(大約100 gb)。

事務日誌文件設置用於文件增長250 MB,最大2,097,152 MB。

日誌文件似乎會按預期增長,直到達到4729 mb。

當問題第一次出現時,文件增長到一個較低的值,但是我減少了同一服務器上其他日誌文件的大小,這似乎允許此事務日誌文件增長的幅度與減少量相同其他文件。

我現在已經用盡瞭如何解決這個問題的想法。如果任何人有任何建議或洞察到該怎麼做,將不勝感激。

+1

請查看https://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx。有些事情可以強制SQL Server進行批量插入,這會減少T-log條目的數量。 – Jeremy

回答

0

首先,您要儘可能避免自動增長;汽車增長事件是巨大的性能殺手。如果您有100GB可用,爲什麼不將日誌文件大小更改爲20GB(在您解決此問題時只是暫時的)。我的政策一直是使用爲特定MDF/NDF/LDF文件分配的磁盤空間的90%以上。沒有理由不這樣做。

如果您正在使用SIMPLE恢復,SQL Server應該管理返回未使用空間的任務,但有時SQL Server不會很出色。在運行查詢之前,請檢查可用的空閒日誌空間。你可以這樣做:

  1. 右鍵單擊數據庫>轉到任務>收縮>文件。
  2. 類型更改爲「日誌」

enter image description here

這將幫助您瞭解多少未使用的空間有。您可以設置「在釋放未使用的空間>收縮文件之前重新組織頁面」爲0.向前移動,您還可以使用CHECKPOINT釋放未使用的空間;這可能是您的查詢運行之前的第一步。

+0

感謝您的建議。我已經在收縮日誌文件到0了,沒有運氣。我已經運行CHECKPOINT(連續兩次),我看到它應該重置它,也沒有運氣。這個問題主要是由於某些原因,日誌看起來不會超過4 - 5GB。我在想,儘管我有大約100Gb的免費版本,但它在某種程度上正在被使用,因此日誌可以採用它。 – MKC

+0

您是否嘗試過創建多個LDF文件? –

+0

不,我讀到如果他們在同一個驅動器上沒有任何優勢,在我的情況下他們會是。我可能會去一趟。感謝您的建議。 – MKC

相關問題