SQL Server 日志传送:如何将目标数据库更改为备用数据库?

SQL Server Log Shipping: how to change a target database to stand by?

提问人:ZedZip 提问时间:12/15/2022 更新时间:12/15/2022 访问量:932

问:

我已将 Log Shippig 添加到 SQL Server:

SQL server1\source_database->SQL server2\target_database

正如我从 SSM 报告中看到的那样,它工作正常。但目标数据库始终处于“正在还原”状态。 我想将其更改为对目标数据库的读取访问权限,并按照此处所述进行所有操作

https://www.mssqltips.com/sqlservertip/3600/change-the-restore-mode-of-a-secondary-sql-server-database-in-log-shipping-with-ssms/

但目标数据库仍处于还原模式。 我做错了什么?如何更改状态并具有读取访问权限?

sql-server 日志传送

评论


答:

1赞 siggemannen 12/15/2022 #1

有两种方法可以:

  1. 将日志传送配置为默认使用待机模式:(在 msdb 中将 restore_mode 设置为 1。log_shipping_secondary_databases在目标服务器上)
  2. 使用还原模式并在还原作业中手动将数据库设置为备用数据库

我非常喜欢方法#2,因为如果您在数据库中执行了很多操作,那么将每个备份还原到待机模式会很慢。

若要手动使用还原模式,请在还原后在 SQL 代理作业中添加一个步骤,并运行如下操作:


if exists(
select 1 from sys.databases where name = 'YOUR DATABASE NAME' and state_desc = 'RESTORING'
)
begin

restore database YOUR_DB_NAME with standby =  'D:\PATH_TO_STANDBY_FILE\YOUR_DB_NAME_standby.tuf'
end

使用此方法,您可以获得更快的还原速度,并且还原作业完成后即可访问您的数据库。

评论

0赞 ZedZip 12/16/2022
我已经按照你写的做了。首先,它需要在没有 *.tuf 文件的情况下进行还原,但在它之后,我没有看到目标数据库中的任何更改。源数据库具有这些更改,并且目标数据库是可访问的。
0赞 siggemannen 12/17/2022
您使用的是方法 1 还是方法 2?或者你到底做了什么?这会在目标服务器上返回什么 从 msdb 中选择restore_mode。.log_shipping_secondary_databases 其中 secondary_database = 'your db'
0赞 ZedZip 12/17/2022
我用过 2.它返回 1,1,即据我所知:好的。数据库始终可访问。但是我没有看到我在源数据库中所做的更改。
0赞 siggemannen 12/17/2022
好吧,我想我的指示有点不清楚。方法 #2 表示日志传送作业应将数据库保留在无恢复模式,然后通过额外的作业步骤手动设置为备用数据库。因此: 1. 在目标服务器上将 restore_mode 更新为 0 2.在 SQL Server 代理还原作业中创建新作业步骤,该步骤将数据库设置为备用,如我在原始答案中所写。3. 在源数据库上运行备份作业。4. 如果您有一些复制作业,请运行它。5. 然后在目标数据库上运行还原作业。如果仍有问题,请检查还原作业的 SQL Server 代理中的日志输出。
0赞 ZedZip 12/17/2022
好的,谢谢你。将按照您的描述进行操作,并让您知道结果。