如果我使用NORECOVERY选项备份事务日志,到SQL Server数据库的活动连接会发生什么情况?

一些背景:我将我的SQL Server数据库迁移到一台新机器,并且我写了几个Powershell脚本asynchronous发送/应用完全备份和事务日志到新的服务器,但我的问题是关于尾日志备份。 最终,我需要我的源数据库对用户不可用,所以我可以备份尾日志并将其应用于新实例。

如果我这样做,活动连接会发生什么情况:

Backup-SqlDatabase -ServerInstance $serverInstance -Database $db -BackupAction Log -NoRecovery -Credential $credential -BackupFile $backupFile 

或者类似的这个:

 BACKUP LOG <db> TO DISK = <path> WITH NORECOVERY 

如果我使用NORECOVERY选项,我知道我的数据库将不可用,但是未提交的事务会立即回滚,还是db会继续活动事务并拒绝新的连接?

我很想知道这里发生了什么,但我非常感谢任何其他有关我的过程的相关build议。 提前致谢!

执行尾部日志备份将导致数据库无法访问(NORECOVERY)或只读(STANDBY)。 如果我需要取出日志文件的活动部分,那么这是预期的。 如果你没有做这个活动,仍然可以写入日志文件,你会失去一致性。

如果使用STANDBY,数据库将被简单地标记为只读,您仍然可以获取日志的尾部。 如果可能的话,迁移的另一个更常见的select是将日志传送到远程服务器。 设置日志传送将允许数据在远程实例上保持最新,同时还在进行最后的准备工作。 那么最后一步就是做一个最后的尾部日志备份,把这个较小的文件移动到远程服务器上,然后把所有的东西都翻转过来。