Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2012 以高可用性还原SQL Server 2012数据库_Sql Server 2012_Restore_High Availability_Database Restore_Alwayson - Fatal编程技术网

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

Sql server 2012 以高可用性还原SQL Server 2012数据库,sql-server-2012,restore,high-availability,database-restore,alwayson,Sql Server 2012,Restore,High Availability,Database Restore,Alwayson,我有一个始终处于高可用性模式的数据库,它与另一个实例上的另一个数据库同步。如何使用T-SQL将.bak文件还原到主数据库中 我是高可用性新手,有人建议我需要先将数据库从高可用性中删除,然后才能执行恢复,然后再将其恢复到高可用性,但我不确定 我希望我可以在AlwaysOn仍处于启用状态时直接还原到主数据库,并且它将自动与辅助数据库同步。如果Microsoft SQL数据库是Microsoft SQL 2012 AlwaysOn可用性组(AAG)的一部分,并且还原到原始位置失败,请执行以下任务: 1

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

我是高可用性新手,有人建议我需要先将数据库从高可用性中删除,然后才能执行恢复,然后再将其恢复到高可用性,但我不确定


我希望我可以在AlwaysOn仍处于启用状态时直接还原到主数据库,并且它将自动与辅助数据库同步。

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

dba.stackoverflow.com上有此问题的完整答案

在此处交叉张贴答案,以便可以从问题的两个版本中找到: 从的答案中逐字复制:


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

HA与镜像非常相似,并使用类似的技术,只是没有那么挑剔。您也会希望同样地对待您的HA DBs

代码类似于以下代码:

--小学

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;
--小学

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;
--在中学

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;

应该在dba.stackexchange.com上被问到——这实际上更多的是一个dba问题(而不是一个编程问题)——投票给moveCheers marc。我不知道那个网站,所以我会在那里问。