在我进行自己的调查时,有谁知道为什么SIMPLE
恢复模型中的数据库LOG_BACKUP
适用于log_reuse_wait_desc
?
SQL Server 2012 SP1。几周前创建的数据库。没有复制,没有镜像,没有日志传送,而且从来没有这些。
我们确实备份了数据库并恢复到另一个实例,它显示SIMPLE
在NOTHING
另一个log_reuse_wait
实例上。但我不认为还原到另一个实例是重现问题的好方法,因为还原操作会前滚/回滚事务。
在我进行自己的调查时,有谁知道为什么SIMPLE
恢复模型中的数据库LOG_BACKUP
适用于log_reuse_wait_desc
?
SQL Server 2012 SP1。几周前创建的数据库。没有复制,没有镜像,没有日志传送,而且从来没有这些。
我们确实备份了数据库并恢复到另一个实例,它显示SIMPLE
在NOTHING
另一个log_reuse_wait
实例上。但我不认为还原到另一个实例是重现问题的好方法,因为还原操作会前滚/回滚事务。
好吧,昨天日夜都在调查、测试和尝试重现问题。找到根本原因:
MODEL
数据库设置为SIMPLE
恢复模式。如果模型数据库已设置为
SIMPLE
恢复模型,并且用户数据库是使用SIMPLE
恢复模型创建的,则 SQL Server 会以某种方式将其视为处于FULL
恢复模型中。因此等待LOG_BACKUP
截断日志。我已在此链接中列出了步骤,以显示我如何重现该问题。
我认为根本原因是如果使用简单恢复模型创建了用户数据库(而不是之后更改),那么它就有这个问题。我将其归咎于模型数据库,因为这是使用定义的恢复模型创建用户数据库的唯一方法。
这记录在 Microsoft 知识库文章 2830400 中,并在 SQL Server 2012 SP1 CU4 和 RTM CU7 中得到修复: