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