2009-08-13 55 views
2

這實際上是一個雙重問題。使用全局臨時表的TempDB日誌文件增長

一,我遇到SQL服務器消耗大量臨時數據庫的現象日誌使用全局臨時表時使用本地臨時表會消耗數據文件空間時的文件空間?

這是正常的嗎?我無法在Web上的任何地方找到使用全局臨時表與本地臨時表時使用這種方式消耗日誌文件空間的情況。

兩個,如果這是預期的行爲,有沒有什麼辦法來告訴它不這樣做:)。我有足夠的數據空間(6 GB),但我的日誌空間受限制(750 MB,增長有限)。像往常一樣,tempDB設置爲簡單恢復,所以運行到日誌文件空間限制之前從未出現過問題......但是我從未使用全局臨時表,就像我之前使用它們一樣。

謝謝!喬爾

回答

1

當創建臨時表的兩種形式(局部或全局)的表在物理上創建並存儲在tempdb數據庫。因此,這些表上的任何事務性活動都記錄在tempdb事務日誌文件中。然而

有沒有每說的設置,你可以實現一個物理表,而不是一個臨時表以用戶數據庫中存儲數據,從而利用該數據庫的相關的數據和事務日誌文件。

如果你真的想要得到陷在和了解tempdb數據庫來看看下面的資源。

Everyning you ever wanted to know about the tempdb database

+0

嗨,John,感謝您的快速回復。當我使用全局臨時表與本地臨時表時,我想我看到的是完全不同的行爲。 本地臨時表似乎不像全局臨時表那樣影響日誌文件。使用全局臨時表會導致日誌文件的增長,就像數據存儲在其中而不是數據文件一樣,而使用本地臨時表會導致它以我認爲正常的速度增長。 – JayRu 2009-08-13 15:01:58

0

什麼是這些全局臨時表中的一個的壽命?他們在合理的時間內下降了嗎?當用戶斷開連接時,如果不是手動連接,則「常規」臨時表將被刪除,並且在創建會話結束時,「全局」(##)臨時表會被刪除,如果內存正常工作。如果全局臨時表持續很長時間,我可以看到日誌增長,因爲可能是管理臨時表活動的日誌記錄仍然被標記爲活動日誌記錄,並且不會被日誌備份釋放(完全恢復)或檢查點(簡單)

+0

非常有趣的想法,很可能是正確的。 在我的情況下,我看到日誌文件立即增加,因爲行被添加到全局臨時表,所以我不知道生命期是否是問題。也許是這樣的情況,即本地臨時表也以類似的方式增長日誌,但日誌備份可以繼續進行,並且它的增長有點簡單,然後截斷......我將不得不進行調查。 – JayRu 2009-08-13 23:47:58

0

如上所述,會話的長度將產生影響。

此外,臨時表的交易和表變量的工作範圍內工作事務的範圍之外。因此,臨時會記錄日誌文件中與表使用更新相關的條目。