我有一个名为[My DB]的数据库,其中包含以下信息:
SQL Server 2008
MDF大小:30 GB
LDF大小:67 GB
我想尽可能地缩小日志文件,所以开始了解如何做到这一点。但需要注意的是,我不是DBA(甚至都不接近DBA),通过摸索来进行。
首先,我只是进入SSMS,DB属性,文件,然后编辑“初始大小(MB)”值为10。这将日志文件缩小到62 GB(并非我输入的确切10 MB)。因此,我附加了SQL Profiler,发现DBCC SHRINKFILE被调用。然后我在查询编辑器中输入了该命令,以下是结果。
DBCC SHRINKFILE (N'My DB_Log' , 10)
输出结果如下:
Cannot shrink log file 2 (My DB_Log) because the logical log file located at the end of the file is in use.
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
8 2 8044104 12800 8044104 12800
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
我随后对此进行了一些研究,并找到了这个链接:
http://support.microsoft.com/kb/907511
其中说我需要在收缩文件之前备份日志文件,以释放虚拟日志文件并使收缩文件能够完成其工作 - 我不知道这是什么意思... 我只是转述一下 :)
所以,我决定尝试备份日志文件,然后执行 DBCC SHRINKFILE 命令(并将新日志文件大小更改为 12800,因为这是上一个 DBCC SHRINKFILE 命令输出中识别的 MinimumSize)
BACKUP LOG [My DB] TO DISK = 'D:\SQLBackup\20110824-MyDB-Log.bak'
GO
DBCC SHRINKFILE (N'My DB_Log' , 12800)
GO
结果与第一次操作相同。 我只能将日志文件缩小到62 GB。
我不确定我做错了什么,以及接下来应该尝试什么。