这个问题可能有点基础,但这里有:
我有一个带有4 GB日志文件的SQL Server数据库。数据库为16GB,每晚备份。
我是否可以定期截断日志,因为每晚都会备份整个DB + Log?
答案 0 :(得分:2)
BACKUP LOG DBNAME
TO disk = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\DBNAME.log'
DBCC SHRINKFILE('DBNAME_Log', 1)
答案 1 :(得分:1)
您确定每晚备份日志而不仅仅是数据库吗?
如果是这样,那么这个数据库做了什么?您是否正在删除并刷新整个表格?如果是这样,您的日志可能是您拥有的交易量的正确大小。您希望日志足够大,以便在不增长的情况下处理正常的事务负载。小日志可能会损害性能。
如果此数据库本质上不是事务性的(即,表是通过完全刷新而不是一次一个记录来填充的),则将恢复模式更改为简单。不要这样做,但是如果你有事务表,你需要能够从日志中恢复,而不是简单地重新导入数据。
答案 2 :(得分:0)
如果您可以在白天运行日志备份(取决于负载等,这可能也可能不适用),您可以通过这样做来控制日志文件。这将防止日志文件本身变得非常大,并且还提供了使您能够在出现问题时更接近故障点恢复的附带好处。
使用DBCC SHRINKFILE后,您仍需要缩小日志文件,但如果在该点之后定期备份,则不应该以较小的尺寸稳定。