以高可用性还原SQL Server 2012数据库

时间:2014-11-12 14:42:38

标签: sql-server-2012 restore high-availability database-restore alwayson

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

我是高可用性的新手,我被告知我需要先从高可用性中取出数据库才能进行恢复,然后再将其恢复到高可用性状态,但我不确定。< / p>

我希望我可以直接恢复到主要设备,而AlwaysOn仍然启用,它将自动与辅助设备同步。

2 个答案:

答案 0 :(得分:1)

在dba.stackoverflow.com上有完整的答案。

在此处交叉发布答案,以便可以从问题的两个版本中找到答案: 从John M的答案逐字复制: https://dba.stackexchange.com/questions/82548/restoring-a-sql-server-2012-database-in-high-availability

倾听您的顾问。通过还原备份,您实质上就是替换数据库架构和数据。您需要关闭同步,从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;

答案 1 :(得分: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