我有一个[My DB]数据库,其中包含以下信息:
SQL Server 2008
MDF大小:30 GB
LDF大小:67 GB
我想尽可能地缩小日志文件,因此我开始寻求解决方法。注意:我不是DBA(甚至不是DBA),并且在完成此任务时一直感觉良好。
首先,我只是进入SSMS,DB属性,文件,然后将“初始大小(MB)”值编辑为10。这将日志文件减小为62 GB(不完全是我输入的10 MB)。因此,我附加了SQL事件探查器,看到正在调用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。
我不确定自己做错了什么,下一步该怎么做。