SQL Server 2012 veritabanını yüksek kullanılabilirlikte geri yükleme


13

Ben her zaman açık yüksek kullanılabilirlik modunda farklı bir durumda başka bir veritabanı ile senkronize bir veritabanı var. .bakKullanarak bir dosyadan birincil veritabanına nasıl geri yükleyebilirim T-SQL?

Ben yüksek kullanılabilirlik için yeniyim ve ben bir geri yükleme yapmak ve sonra tekrar yüksek kullanılabilirlik içinde geri koymak önce yüksek kullanılabilirlik veritabanı almak gerekir tavsiye edildi ama emin değilim.

Ben AlwaysOnhala etkin iken doğrudan birincil içine geri yükleyebilirsiniz ve otomatik ikincil ile senkronize umuyoruz.

Yanıtlar:


15

Danışmanınızı dinleyin. Bir yedeklemeyi geri yükleyerek, temel olarak veritabanı şemasını ve verilerini değiştirirsiniz. Senkronizasyonu kapatmanız, DB'yi HA'dan kaldırmanız ve birincil ve çoğaltmada geri yüklemeyi gerçekleştirmeniz, WITH NORECOVERY kullanarak çoğaltma sürümünü geri yükleme durumunda bırakmanız gerekir. Yedeklemeniz gerçekleştikten sonra DB'yi HA'ya geri koyun ve senkronizasyonu yeniden başlatın.

HA yansıtma işlemine çok benzer ve benzer teknolojiyi kullanır, neredeyse titiz değildir. HA DB'lerinize de benzer şekilde davranmak isteyeceksiniz.

Kod aşağıdakine benzer:

- birincil

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

- birincil

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;

- ikincil

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;

- birincil

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

- ikincil

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

Yukarıdaki cevaba ilişkin soru ... Verilen kodda, PRIMARY NoRecovery ile geri yüklendi. NoRecovery ile sadece Replica'nın yapılacağını düşündüm.
Truett

Doğru ama okumaya devam et. Günlük geri yüklemeleri kodlanmış ve daha sonra kullanım için kullanılabilir hale getirmek için RECOVERY İLE kodlanmıştır.
Steve Mangiameli

Biri ikincil durumdaki kullanılabilirlik grubuna yeniden katılamazsa, işlem günlüğünü geri yüklemek gerekebilir. Bu kaynak aşağıdaki hatanın çözülmesine yardımcı oldu:The mirror database, "dbname", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database.
Hans Vonn

Böylece günlük geri yüklenir. Yukarıdaki açıklamaya bakınız.
Steve Mangiameli

@SteveMangiameli bunu yaptığınız için teşekkür ederim. Çok kullanışlı oldu. Artık dosya yerine mantıksal bir yedekleme cihazından geri yüklediğinizi anlıyorum. Dosyadan geri yüklediğimde ayrı .bak ve .trn dosyaları kullanıyorum.
Hans Vonn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.