我的任务是管理一些MS SQL Server(Express)数据库。我的主要DBA经验是DB2 LUW和Oracle数据库,我很难理解SQL Server处理事务日志的方式。
我将数据库设置为“完整”恢复模型和预分配的100 MB事务日志文件。使用Windows计划程序,我在00:00运行每日完整备份,并从02:00开始每2小时记录一次备份。
据我了解,运行日志备份会自动释放事务日志空间,但似乎不是这种情况 - “dbcc sqlperf(logspace)”的输出显示“使用的日志空间%”数字不断(如果缓慢)上升。
目前它已达到5%,所以我还没有处于恐慌状态,但我对 对SQL服务器的做法感到困惑。
我用于完整备份的TSQL语句:
BACKUP DATABASE [xxx] TO DISK = N'E:\backups\xxx.bak' WITH DESCRIPTION = N'blah', RETAINDAYS = 7, NOFORMAT, NOINIT, NAME = N'blah', NOSKIP, REWIND, NOUNLOAD, STATS = 10, CHECKSUM
日志备份的TSQL语句是:
BACKUP LOG [xxx] TO DISK = N'E:\backups\xxx.trn' WITH DESCRIPTION = N'blah', RETAINDAYS = 7, NOFORMAT, NOINIT, NAME = N'blah', NOSKIP, REWIND, NOUNLOAD, STATS = 10, CHECKSUM
那么,为了释放日志空间,我该怎么做?
提前感谢您的意见。
答案 0 :(得分:0)
dbcc sqlperf(logspace)
显示了日志空间的近似用法。通常这个值比实际可用空间更高(但从不低)。本文简要介绍了在日志备份后log space used
未设置为“0”的原因:http://support.microsoft.com/kb/281879。因此,您使用的日志空间可能会上升到25%,然后再回落到例如5%。
您不必担心增加日志空间使用值。只要您有定期日志备份,事务日志就会有足够的可用空间(除了单个事务将跨越100 Mb日志文件的情况,这种情况我认为不是很常见)。