web-dev-qa-db-fra.com

Restauration d'une base de données SQL Server 2012 en haute disponibilité

J'ai une base de données qui est en mode haute disponibilité toujours synchronisée avec une autre base de données sur une instance différente. Comment puis-je restaurer à partir d'un .bak fichier dans la base de données principale à l'aide de T-SQL?

Je suis novice en matière de haute disponibilité et on m'a dit que je devais retirer la base de données de la haute disponibilité avant de pouvoir effectuer une restauration, puis la remettre à nouveau en haute disponibilité, mais je ne suis pas sûr.

J'espère que je peux simplement restaurer directement dans le primaire tandis que le AlwaysOn est toujours activé et il se synchronisera automatiquement avec le secondaire.

13
Stew

Écoutez votre conseiller. En restaurant une sauvegarde, vous remplacez essentiellement le schéma et les données de la base de données. Vous devrez désactiver la synchronisation, supprimer la base de données de HA et effectuer la restauration sur le principal et le réplica, en laissant la version du réplica dans un état de restauration à l'aide de WITH NORECOVERY. Une fois votre sauvegarde en place, replacez la base de données dans HA et recommencez la synchronisation.

HA est très similaire à la mise en miroir et utilise une technologie similaire, mais pas aussi capricieuse. Vous souhaiterez également traiter vos bases de données HA.

Le code serait semblable au suivant:

- au primaire

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

- au primaire

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.

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

- au secondaire

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;

- au primaire

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

- au secondaire

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;
15
Steve Mangiameli