首页 > 解决方案 > 如何将数据库永久设置为 SINGLE_USER 模式?

问题描述

我使用 dbatools 命令实现了日志传送,今天正在对其进行测试。我注意到的是,当我查询已恢复/备用数据库时,例如在表上进行选择,事务日志的恢复失败,直到我与实例断开连接。

Message
2021-09-24 23:00:23.60  *** Error: Could not apply log backup file '\\devops\c$\Users\devops_user\Documents\DBLogShipping\Backups\LogShippingFiles\test12345\test12345_20210924225000.trn' to secondary database 'test12345'.(Microsoft.SqlServer.Management.LogShipping) ***
2021-09-24 23:00:23.60  *** Error: Exclusive access could not be obtained because the database is in use.
RESTORE LOG is terminating abnormally.(.Net SqlClient Data Provider) ***

待机/读取

我发现通过将数据库设置为 SINGLE_USER 模式:

USE master
GO

ALTER DATABASE test12345
SET SINGLE_USER
--This rolls back all uncommitted transactions in the db.
WITH ROLLBACK IMMEDIATE
GO

单用户

在查询数据库时,还原作业实际上可以正常工作,因此无需断开与服务器的连接。我的意思是那太好了!但是,当我断开连接并稍后重新连接到实例时,我看到 SINGLE_USER 模式消失了……看起来它恢复到了默认的 multi_user 模式?

有没有办法将数据库永久设置为单用户模式?

标签: sql-server

解决方案


推荐阅读