2017-07-07 55 views
1

這是一個很長的故事,但我爲一個學校系統的研究部門工作,我們的IT部門與我們一起工作。一段時間回到IT部門。向我發放了一臺安裝了SQL的服務器,並且基本上告訴我,我是靠自己的 - 他們不會幫助維護服務器或SQL數據庫的幕後功能。在大多數情況下,這對我來說很合適,但我不是數據庫管理員,而且我從未能夠解決設置數據庫備份和事務日誌記錄的問題。T-SQL事務日誌問題

我現在想解決的問題是事務日誌記錄。每天晚上我都會使用SSIS將大量的記錄從我們的主數據庫中提取到我的數據庫中。我已經將這個過程分成了18個獨立的步驟,並且第9步要做事務日誌備份。不幸的是,由於事務日誌填滿了,我的進程仍然會定期崩潰 - 有時甚至在備份之後的第10步中也會崩潰。我將在我的過程中禁用日誌記錄,但一直在閱讀並看到您無法關閉日誌記錄。我希望有一個簡單的解決方案,我不知道......

我運行:

Microsoft SQL Server 2012 (SP3-GDR) (KB3194721) - 11.0.6248.0 (X64) 
Sep 23 2016 15:49:43 
Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) 
on Windows NT 6.2 <X64> (Build 9200:) (Hypervisor). 

老實說,我甚至不知道我是什麼類型的事務日誌在做或如何檢查和發現。

任何幫助,將不勝感激

+0

看看這個(https://dba.stackexchange.com/questions/29829/why-does-the-transaction-log-keep-growing-or-run-out-of-space),mean while您可以要求您的IT團隊在一段時間內增加磁盤空間,直到您確定TLOG爲止。 – TheGameiswar

+1

您絕對可以通過將數據庫的恢復模式更改爲「SIMPLE」來關閉事務日誌記錄。對於你在做什麼而言,這幾乎肯定是一個壞主意,但我想指出這是可能的。 –

+1

@StanShaw,'SIMPLE'不會關閉日誌。它會自動從日誌中刪除已提交的事務,並允許最低限度的日誌操作,如SSIS快速加載方法。事務日誌仍然需要調整大小以容納最大事務的空間。 「SIMPLE」或「BULK_LOGGED」模型是否合適完全取決於RPO SLA。 –

回答

1

首先,當你說,

我每天晚上使用SSIS大量的從我們的主數據庫記錄拉進我的數據庫

我認爲這並不意味着系統主數據庫。如果是這樣,那裏就不應該有用戶對象,它不應該在那裏處理或存儲任何用戶數據。如果是,請將其遷移到用戶數據庫。

其次,日誌記錄問題的簡短答案如下: 數據庫的默認恢復模型爲Full。正如在評論中指出的那樣,這意味着在備份發生之前不會覆蓋日誌。此模型適用於時間點恢復,並且對於事務性系統有意義。所以有幾種選擇:

  • 如果這是一個報告系統,通常將它放入simple recovery model並進行夜間備份是有意義的。特別是如果數據每天只更改一次。
  • 如果您確實需要最快的時間點恢復,則應每15分鐘執行一次日誌備份。我猜測這些備份的管理和保留對你來說是沒有意義的,你應該使用選項1.
  • 當在SSIS數據流中處理數據時,每次提交一個緩衝區。如果你沒有弄錯默認值,這意味着你最多提交10k行。所以一切都已經很好地分解了。那麼問題不在於批量大小太大,而在於您處於錯誤的恢復模式,或者您沒有足夠頻繁地備份日誌。
+0

謝謝馬克!您是正確的,這不是來自系統主數據庫,而是來自供應商數據庫的所有事務都被輸入到的數據庫。這個數據庫的快照每天晚上進行,我從該快照下載我需要的數據到我的報告數據庫系統(再次更正)。我看了一下,正在做完整的備份,所以根據你的建議,我已經將其切換到簡單恢復。 –