收缩事务日志
官方文檔:http://msdn.microsoft.com/zh-cn/library/ms178037%28v=sql.90%29.aspx
減小事務日志的物理大小需要收縮日志文件。通過刪除一個或多個不活動的虛擬日志文件來收縮事務日志,從而減小其物理大小。包含任何活動日志記錄的虛擬日志文件(即“活動的虛擬日志文件”)是邏輯日志的一部分,不能將其刪除。
何時收縮日志?可以在數據庫在線時執行收縮日志操作。在下列情況下,日志文件的物理大小將減小:
- 發生自動收縮操作。
- 執行引用日志文件的 DBCC SHRINKFILE 語句。
- 執行 DBCC SHRINKDATABASE 語句。
收縮日志文件
- DBCC SHRINKFILE (Transact-SQL)
- 如何收縮文件 (SQL Server Management Studio)
監視日志文件收縮事件
- Log File Auto Shrink 事件類.
監視日志空間使用情況
- DBCC SQLPERF (Transact-SQL)
- sys.database_files (Transact-SQL)(請參閱日志文件的 size、max_size 以及 growth 等列。)
?
示例
A. 將數據文件收縮到指定的目標大小
以下示例將 UserDB 用戶數據庫中名為 DataFile1 的數據文件的大小收縮到 7 MB。
USE UserDB; GO DBCC SHRINKFILE (DataFile1, 7); GOB. 將日志文件收縮到指定的目標大小
以下示例將 AdventureWorks 數據庫中的日志文件收縮到 1 MB。若要允許 DBCC SHRINKFILE 命令收縮文件,首先需要通過將數據庫恢復模式設置為 SIMPLE 來截斷該文件。
USE AdventureWorks; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE (AdventureWorks_Log, 1); GO -- Reset the database recovery model. ALTER DATABASE AdventureWorks SET RECOVERY FULL; GOC. 截斷數據文件
以下示例將截斷 AdventureWorks 數據庫中的主數據文件。需要查詢 sys.database_files 目錄視圖以獲得數據文件的 file_id。
USE AdventureWorks; GO SELECT file_id, name FROM sys.database_files; GO DBCC SHRINKFILE (1, TRUNCATEONLY);D. 清空文件
以下示例演示了清空文件以便從數據庫中將其刪除的步驟。針對此示例,首先創建一個數據文件,并假設該文件包含數據。
USE AdventureWorks; GO -- Create a data file and assume it contains data. ALTER DATABASE AdventureWorks ADD FILE (NAME = Test1data,FILENAME = 'C:\t1data.ndf',SIZE = 5MB); GO -- Empty the data file. DBCC SHRINKFILE (Test1data, EMPTYFILE); GO -- Remove the data file from the database. ALTER DATABASE AdventureWorks REMOVE FILE Test1data; GO?
?
轉載于:https://www.cnblogs.com/davidwang456/archive/2013/03/08/2950294.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: sql server监控
- 下一篇: spring启动过程之源码跟踪(上)--