我有一个数据库,它处于始终在线的高可用性模式,与不同实例上的另一个数据库同步。如何使用T-SQL从.bak文件恢复到主数据库?
我刚接触高可用性,有人建议我在进行恢复之前需要将数据库从高可用性中删除,然后再将其放回高可用性中,但我不确定。
我希望我可以直接恢复到主节点,同时AlwaysOn仍处于启用状态,并且它将自动与辅助节点同步。
发布于 2015-12-29 01:48:47
这个问题在dba.stackoverflow.com上有一个完整的答案。
在这里交叉发布答案,这样就可以从问题的两个版本中找到答案:逐字复制自John M的答案:https://dba.stackexchange.com/questions/82548/restoring-a-sql-server-2012-database-in-high-availability
听你导师的话。通过还原备份,您实际上是在替换数据库架构和数据。您需要使用WITH NORECOVERY关闭同步,从HA中删除数据库,然后在主副本和复制副本上执行恢复,从而使复制副本版本处于正在恢复状态。备份就位后,将数据库放回HA并再次启动同步。
HA非常类似于镜像,并且使用类似的技术,只是没有那么挑剔。您也会希望以类似的方式对待您的HA DB。
代码将类似于以下代码:
--在主服务器上
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-03-05 11:40:04
如果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。
https://stackoverflow.com/questions/26889631
复制相似问题