1

我有一个始终处于高可用性模式的数据库,它与不同实例上的另一个数据库同步。如何.bak使用 T-SQL 从文件还原到主数据库?

我是高可用性的新手,有人建议我需要先使数据库脱离高可用性,然后才能进行还原,然后再次将其恢复为高可用性,但我不确定。

我希望我可以在 AlwaysOn 仍然启用的情况下直接恢复到主服务器,它会自动与辅助服务器同步。

4

2 回答 2

2

在 dba.stackoverflow.com 上有这个问题的完整答案。

在此处交叉发布答案,以便可以从问题的两个版本中找到:从John M的答案中逐字复制: https ://dba.stackexchange.com/questions/82548/restoreing-a-sql-server -2012-数据库高可用性


听你的顾问。通过恢复备份,您实际上是在替换数据库架构和数据。您将需要关闭同步,从 HA 中删除数据库并对主副本和副本执行还原,使用 WITH NORECOVERY 使副本版本处于还原状态。备份到位后,将数据库放回 HA 并再次开始同步。

HA 与镜像非常相似,并且使用类似的技术,只是没有那么挑剔。您也将希望以类似方式对待您的 HA 数据库。

代码将类似于以下内容:

--在初级

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

--在初级

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

--在二级

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY;

--在二级

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;
于 2015-12-28T17:48:47.130 回答
0

如果 Microsoft SQL 数据库是 Microsoft SQL 2012 AlwaysOn 可用性组 (AAG) 的一部分,并且还原到原始位置失败,请执行以下任务: 1. 将要还原的数据库从可用性组中移除。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/hh213326.aspx。2. 使用还原管理器将数据库还原到 AAG 组中的所有节点。3. 将数据库添加回可用性组。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/hh213078.aspx

于 2015-03-05T03:40:04.327 回答