[轉載] SQL Server事務日誌的收縮和截斷
在SQL Server資料庫中事務日誌起著至關重要的作用:它持續記錄資料庫所有的事務和這些事務對資料庫所做的修改;一旦資料庫出現災難事件,就需要事務日誌來進行近期資料的恢復操作。不過,要得到任何好處都要付出的相應代價:在活動資料庫中,事務日誌會消耗大量的儲存空間,如果你不做任何干預,事務邏輯日誌會一直增長,直到塞滿儲存這些日誌檔案的所有可用空間。SQL Server提供了兩個用來平衡事務日誌對空間巨大需求的操作:截斷事務日誌和收縮事務日誌。
日誌截斷
截斷事務日誌操作就是清除事務日誌檔案中的非活動記錄。一般情況下,SQL Server能夠自動執行截斷操作,不需要人工干預管理。截斷的頻率取決於資料庫的使用程度。你每進行一次完整恢復模式或大容量日誌恢復模式的資料庫備份,SQL Server就會截斷一次事務日誌。如果是在簡單恢復模式下(不能還原事務日誌),SQL Server會在每個檢查點之後截斷事務日誌。
你也可以透過間接的方式手動驅使SQL Server執行事務日誌截斷操作,需要執行備份操作,不過你可以給SQL Server下指示,表明你只想執行事務日誌的備份操作,不做執行其他任何操作。透過以下的T-SQL命令可以達到上述效果:
BACKUP LOG WITH TRUNCATE_ONLY;
日誌收縮
截斷日誌雖然確實從日誌檔案中清除了事務,但並不會真正減小物理日誌檔案的大小。SQL Server希望事務日誌最終會擴充套件到其截斷前的大小,所以截斷不會釋放已經分配給日誌的硬碟空間。如果你的日誌在某一時刻人為地擴充套件到某個大小,卻再也無法恢復到這個大小的話可就麻煩大了。
在這種情況下,要釋放硬碟物理空間做其他用途,就要手動進行事務日誌檔案收縮操作。你可以使用以下的T-SQL命令來實現日誌檔案收縮:
DBCC SHRINKFILE(,)
上面命令中的desired_shrink_size指的是你想要回收的硬碟空間大小(以MB為單位)。你可以在執行完事務日誌截斷操作之後立即回收大部分的磁碟空間。
日誌截斷
截斷事務日誌操作就是清除事務日誌檔案中的非活動記錄。一般情況下,SQL Server能夠自動執行截斷操作,不需要人工干預管理。截斷的頻率取決於資料庫的使用程度。你每進行一次完整恢復模式或大容量日誌恢復模式的資料庫備份,SQL Server就會截斷一次事務日誌。如果是在簡單恢復模式下(不能還原事務日誌),SQL Server會在每個檢查點之後截斷事務日誌。
你也可以透過間接的方式手動驅使SQL Server執行事務日誌截斷操作,需要執行備份操作,不過你可以給SQL Server下指示,表明你只想執行事務日誌的備份操作,不做執行其他任何操作。透過以下的T-SQL命令可以達到上述效果:
BACKUP LOG WITH TRUNCATE_ONLY;
日誌收縮
截斷日誌雖然確實從日誌檔案中清除了事務,但並不會真正減小物理日誌檔案的大小。SQL Server希望事務日誌最終會擴充套件到其截斷前的大小,所以截斷不會釋放已經分配給日誌的硬碟空間。如果你的日誌在某一時刻人為地擴充套件到某個大小,卻再也無法恢復到這個大小的話可就麻煩大了。
在這種情況下,要釋放硬碟物理空間做其他用途,就要手動進行事務日誌檔案收縮操作。你可以使用以下的T-SQL命令來實現日誌檔案收縮:
DBCC SHRINKFILE(,)
上面命令中的desired_shrink_size指的是你想要回收的硬碟空間大小(以MB為單位)。你可以在執行完事務日誌截斷操作之後立即回收大部分的磁碟空間。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-510036/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt] SQL Server 事務日誌的收縮和截斷SQLServer
- SQL Server如何截斷(Truncate)和收縮(Shrink)事務日誌SQLServer
- 有關事務日誌截斷和收縮
- SQL Server 收縮事務日誌的方法SQLServer
- SQL Server 收縮日誌SQLServer
- 淺談SQL Server中的事務日誌(轉載)SQLServer
- SQL SERVER 資料庫日誌收縮整理 三種方法軼事分離資料庫而是清空日誌三是截斷日誌SQLServer資料庫
- SQL SERVER 2005 日誌收縮SQLServer
- 關於SQL Server 截斷日誌[zt]SQLServer
- SQL Server 事務日誌傳輸SQLServer
- SQL Server事務日誌介紹SQLServer
- 淺談SQL Server中的事務日誌(一)----事務日誌的物理和邏輯構架SQLServer
- SQL Server事務日誌的處理方法SQLServer
- SQL Server大型事務日誌的備份SQLServer
- MS SQL Server 事務日誌介紹SQLServer
- SQL Server事務日誌過大的處理SQLServer
- 縮小日誌大小,截斷日誌;然後shrink
- 清除 SQL SERVER 2005 事務日誌SQLServer
- sqlserver 事務日誌過大 收縮方法解決方案SQLServer
- SQL Server備份事務日誌結尾(Tail)SQLServerAI
- SQL語句收縮日誌檔案SQL
- 壓縮SQL SERVER日誌程式碼SQLServer
- 關於SQL Server事務日誌的問題彙總SQLServer
- SQL Server資料庫事務日誌儲存序列SQLServer資料庫
- SQL Server 2008 事務日誌備份SQLServer
- Sql Server 2005 日誌壓縮SQLServer
- SQL Server 2008 事務日誌備份注意事項SQLServer
- SQL Server 2008 建立事務日誌備份SQLServer
- 深入SQLServer日誌收縮SQLServer
- SQL 事務日誌填滿的原因SQL
- ORACLE LOGFILE 和 SQL SERVER 2005 事務日誌管理和恢復的比較OracleSQLServer
- Spring AOP 日誌攔截器的事務管理Spring
- SQL Server資料庫事務日誌序列號(LSN)介紹SQLServer資料庫
- SQL Server 2008還原事務日誌備份SQLServer
- SQL Server 2008進行備份事務日誌SQLServer
- SQL Server 2008結尾事務日誌備份SQLServer
- SQLServer 2012 AG主節點無法截斷事務日誌SQLServer
- 用sql語句dbcc log 檢視SQL Server 資料庫的事務日誌SQLServer資料庫