什么时候应该使用完整恢复模型,什么时候应该对数据库使用简单恢复模型?
我一直使用完整恢复模式,因为它是默认模式,但今天我遇到了此错误:
SQL Server的Microsoft OLE DB提供程序(0x80040E14)数据库'数据库名称'的事务日志已满。要找出为什么无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列
特定的数据库实际上是服务器上最小,最不活动的数据库之一,因此我不知道该数据库上的日志如何充满,而不是其他数据库。
为了缩小日志并使数据库可再次访问,我使用以下命令将恢复模型从FULL更改为SIMPLE并缩小了逻辑文件日志
alter database myDbName SET recovery simple
go
dbcc shrinkfile('LOG FILE LOGICAL NAME', 100)
go
它帮助,但现在我需要了解为什么它的帮助下,如何这种情况开始,如何防止这种情况在未来?
编辑:
每天晚上1点,我们都会对服务器上的每个数据库进行脚本化备份。这是由31行脚本完成的,其中最重要的部分是
set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak'
set @Description = 'Full backup of database ' + @Filename
BACKUP DATABASE @DBName TO DISK = @Filename WITH INIT , NOUNLOAD , NAME = @Description, NOSKIP , STATS = 10, NOFORMAT
新的恢复模型和数据库收缩是否会与此脚本冲突?
我们不对数据库进行任何其他类型的备份,因此不对事务日志进行备份吗?