我有一个数据库,它处于永远在线的高可用性模式,与另一个实例上的另一个数据库同步。如何使用T-SQL从.bak
文件还原到主数据库?
我是高可用性的新手,我被告知我需要先从高可用性中取出数据库才能进行恢复,然后再将其恢复到高可用性状态,但我不确定。< / p>
我希望我可以直接恢复到主要设备,而AlwaysOn仍然启用,它将自动与辅助设备同步。
答案 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。