2009年8月4日 星期二

如何避免 SQL Server 資料庫的交易記錄檔超出預期大小

在 SQL Server 2000 和 SQL Server 2005 中,每個資料庫至少都包含一個資料檔以及一個交易記錄檔。SQL Server 實際上會將資料儲存在資料檔中。交易記錄檔則是儲存您在 SQL Server 資料庫中執行的所有修改的詳細資料,以及執行每項修改時的詳細交易資料。因為交易完整性被視為 SQL Server 的基本特性,因此無法關閉 SQL Server 中,詳細交易資料的記錄功能。

交易記錄檔會依照邏輯分成較小的區段,稱之為虛擬記錄檔。在 SQL Server 2000 中,您可以設定交易記錄檔依照需要來擴充。交易記錄檔的擴充範圍可由使用者決定,或者也可以設定為使用所有的可用磁碟空間。SQL Server 對交易記錄檔大小所做的任何修改 (例如,截斷交易記錄檔或擴充交易記錄檔),在執行時都是以虛擬記錄檔為單位。

如果對應於 SQL Server 資料庫的交易記錄檔已滿,而且您已經設定了讓交易記錄檔自動擴充的選項,則交易記錄檔將會以虛擬記錄檔為單位來進行擴充。有時候,交易記錄檔可能會變得非常大,而導致磁碟空間不足。當交易記錄檔擴充到用完所有的可用磁碟空間,而無法再繼續擴充時,您就無法再對資料庫執行任何資料修改的作業。此外,如果因為沒有空間可供交易記錄檔進行擴充時,SQL Server 可能會將資料庫標示為可疑 (Suspect)。

縮減交易記錄檔的大小
如果要復原超出預期限制的交易記錄檔,您必須縮減交易記錄檔的大小。如果要執行這項操作,必須截斷交易記錄檔中的非現用交易,並且壓縮交易記錄檔。

截斷交易記錄檔中的非現用交易
當交易記錄檔超出預期限制時,必須立即備份交易記錄檔。在建立交易記錄檔的備份時,SQL Server 會自動截斷交易記錄檔中的非現用部份。交易記錄檔中的非現用部份包含已經完成的交易,因此,在復原過程中,SQL Server 不會再用到交易記錄檔。SQL Server 會重新使用交易記錄檔中已截斷的非現用空間,而不是讓交易記錄檔繼續擴充並且使用更多的空間。

壓縮交易記錄檔
備份作業或截斷方式都不會縮減記錄檔的大小。如果要縮減交易記錄檔的大小,必須壓縮交易記錄檔。如果要將交易記錄檔壓縮成所需的大小,並且移除未使用的頁面,必須使用 DBCC SHRINKFILE 作業。但是,DBCC SHRINKFILE Transact-SQL 陳述式只能壓縮記錄檔內的非現用部份。

轉 http://support.microsoft.com/kb/873235/zh-tw

沒有留言:

張貼留言