İlişkili veritabanları sürekli kurtarmak için işaretlenen kullanımı (tam kurtarma modeli)

Mavi veritabanı diskini gösteren simge Bu konu yalnızca alakalı SQL Servertam veya toplu oturum kurtarma modeli kullanan veritabanları.

İki veya daha fazla veritabanları için ilgili güncelleştirmeleri yaptığınızda ilgili veritabanları, bunları mantıksal olarak tutarlı bir noktaya kurtarmak için işlem işaretleri kullanabilirsiniz. Ancak, bu kurtarma kurtarma noktası olarak kullanılan işaretini sonra kaydedilmiş herhangi bir işlem kaybeder. Hareketleri işaretleme sadece ilgili veritabanları sınarken ya da son zamanlarda tamamlanmış hareketler kaybetmeye istekli olduğunda uygundur.

Düzenli olarak ilgili her veritabanında ilgili hareketleri işaretleme ortak kurtarma noktaları bir dizi veritabanlarında kurar. İşlem işaretleri hareket günlüğüne kaydedilir ve günlük yedeklere dahil. Bir felaket durumunda, size her veritabanları tutarlı bir noktaya onları kurtarmak için aynı işlem işareti geri yükleyebilirsiniz.

[!NOT]

Günlük yedeklemeler farklı veritabanları üzerinde birbirlerinden bağımsız olarak oluşturulabilir ve eşzamanlı olması gerekmez.

Aşağıdaki senaryolarda ilgili veritabanları kurtarma hareketleri ilgili her veritabanında zaten işaretlenmiş gerekir:

  • Bir veya daha fazla işlem günlüklerinin imha edilir. Sen-si olmak-e veritabanları kümesi son günlük yedekleme anda tutarlı bir duruma geri yüklemek.

  • Veritabanları kümesinin tamamını zamanında önceki noktada birbirini tutarlı bir duruma geri yüklemek zorunda.

Önemli notÖnemli

Ilişkili veritabanları yalnızca işaretli hareket değil, belirli bir noktada zamanında kurtarabilirsiniz.

İşaretleme işlemleri oluşturma hakkında daha fazla bilgi için bkz: "işaretli hareketler, oluşturma" Bu konudaki.

İşaretli hareketler kullanma tipik senaryo

İşaretli hareketler kullanma tipik bir senaryoda, aşağıdaki adımları içerir:

  1. Her ilgili veritabanlarının tam veya fark veritabanı yedeğini oluşturun.

  2. Tüm veritabanları hareket bloğunda işaretle.

  3. Tüm veritabanları için işlem günlüğü yedekleyin.

  4. Veritabanı yedeklemeleri norecovery ile geri yükleyin.

  5. Geri yükleme WITH stopatmark günlüğe kaydeder.

İşaretli hareketler kullanma hakkında önemli noktalar

İşaretleri içine hareket günlüğü adlı eklemeden önce aşağıdakileri dikkate alın:

  • İşlem işaretleri günlük alanı tüketir, bunları veritabanı kurtarma stratejisi içinde önemli rol oynayan hareketleri kullanın.

  • Işaretli hareket tamamlandıktan sonra bir satır eklenir eklenirlogmarkhistorymsdb içinde tablo msdb.

  • Işaretli hareket aynı veritabanı sunucusu veya farklı sunucularda birden çok veritabanı yayılmışsa, işaretleri tüm etkilenen veritabanları günlüklerinde kaydedilmiş olmalıdır.

İşaretli hareketlerin oluşturma

Işaretli hareket oluşturmak için BEGIN TRANSACTION deyimi ve ile mark description] yan. İsteğe bağlı descriptionişareti metinsel olur. Hareketin bir işareti adı gereklidir. Bir işareti adı yeniden kullanılabilir. Işlem günlüğü işareti adı, açıklaması, veritabanı, kullanıcı, Tarih Saat bilgisi ve günlük sıra numarası (lsn) kaydeder. Datetime bilgi işareti adıyla birlikte işareti benzersiz olarak tanımlamak için kullanılır.

Işaretli işlemler kümesi veritabanları oluşturmak için:

  1. Hareket BEGIN tran deyiminde adlandırın ve mark ile yan tümcesini kullanın

    BEGIN tran deyimi iç içe geçirebilirsiniz new_mark_nameile mark varolan bir hareketin içinde. Değeri new_mark_namebile hareketin hareket adı sahiptir hareket işareti adıdır.

    [!NOT]

    Eğer ikinci bir iç içe BEGIN tran yayın...İŞARETİ, bu ifadeyi atlanır ama bir uyarı mesajı neden olur.

  2. Tüm veritabanları kümesindeki karşı bir güncelleştirme çalıştırın.

    Mark belirli bir işlem için işlem günlüklerini yalnızca sunucu örneği üzerinde eklendiği yerde BEGIN tran...İŞARETİ ile deyimi yürütülür. Bu sunucu örneği üzerinde işaretli hareket tarafından güncelleştirilen her veritabanı işlem günlüğünün hareket işareti konur. Veritabanları farklı sunucu örneği üzerinde bulunuyorsa, her sunucu örnekleri aynı işaretleri oluşturulmalıdır.

Örnekler

Aşağıdaki örnek işlem günlüğü adlı işaretli hareket işareti geri yükler ListPriceUpdate.

USE AdventureWorks
GO
BEGIN TRANSACTION ListPriceUpdate
   WITH MARK 'UPDATE Product list prices';
GO

UPDATE Production.Product
   SET ListPrice = ListPrice * 1.10
   WHERE ProductNumber LIKE 'BK-%';
GO

COMMIT TRANSACTION ListPriceUpdate;
GO

-- Time passes. Regular database 
-- and log backups are taken.
-- An error occurs in the database.
USE master
GO

RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups 
   WITH FILE = 4,
   RECOVERY, 
   STOPATMARK = 'ListPriceUpdate';

Diğer sunuculara yaymak için bir işareti zorlama

Bir hareket işareti adı otomatik olarak diğerine yayılabilen değil sunucu olarak hareket vardır yayılır. Diğer sunuculara yayılmasına İşaretle zorlamak için bir saklı yordam bir BEGIN tran içeren yazılması namedeyimi ile işaretlemek. Saklı yordam sonra uzak sunucu kaynak sunucu işlem kapsamında yürütülmelidir ki.

Örneğin, üzerinde birden çok örneğini varolan bir bölümlenmiş veritabanı düşünün SQL Server. Her örneği olduğunu adlı bir veritabanı coyote. Öncelikle, her veritabanı, örneğin, bir saklı yordam oluşturmak sp_SetMark.

CREATE PROCEDURE sp_SetMark
@name nvarchar (128)
AS
BEGIN TRANSACTION @name WITH MARK
UPDATE coyote.dbo.Marks SET one = 1
COMMIT TRANSACTION;
GO

Ardından, saklı yordam oluşturmak sp_MarkAllher veritabanında işaret koyar bir hareketi içeren. sp_MarkAllörnekleri herhangi bir çalıştırılabilir.

CREATE PROCEDURE sp_MarkAll
@name nvarchar (128)
AS
BEGIN TRANSACTION
EXEC instance0.coyote.dbo.sp_SetMark @name
EXEC instance1.coyote.dbo.sp_SetMark @name
EXEC instance2.coyote.dbo.sp_SetMark @name
COMMIT TRANSACTION;
GO

İki evreli tamamlama

Dağıtılmış bir işlem yapılıyor, iki aşamadan oluşuyor: hazırlamak ve uygulamak. Işaretli hareket kaydedilmiş olduğunda her veritabanında işaretli hareket tamamlama günlük kaydı günlük bir noktada yerleştirilir hiçbir şüpheli hareketi günlüklerinin herhangi bir yerde. Bu noktada, orada hiçbir hareketleri de kararlı bir günlük olarak görünür, ancak başka bir günlüğüne kaydedilmiş değil garantilidir.

Işaretli hareket kaydetme sırasında bunu aşağıdaki adımları:

  1. Tezgahlarda tüm yeni bir işaretleme hareketinin aşama hazırlamak hazırlar ve tamamlar.

  2. Önceden hazırlanmış hareketlerinin yalnızca iptalleri devam etmek için izin verilir.

  3. (Zaman aşımı ile) tahliye hazırlanan tüm hareketler için hareket sonra işaretleme bekler.

  4. Işaretli hareket hazır ve kararlıdır.

  5. Durak, yeni hazırlar ve tamamlar kaldırılır.

Birden çok veritabanı span işaretli hareketler tarafından oluşturulan stalls işlem işleme sunucu performansı düşürebilir.

İşaretli hareketler aynı anda çalıştırmayın öneririz. Nadir ama mümkün için tamamlama, dağıtılmış kilitlenme hareketine diğer dağıtılmış hareketleri aynı anda yapılıyor işaretlenmiş işaretlenmiş. Bu durumda, işaretleme hareket kilitlenme kurbanı olarak seçildi ve geri alınır. Bu hata oluştuğunda uygulama işaretli hareket yeniden deneyebilirsiniz. Birden fazla işaretli hareketler aynı anda işlemek çalıştığınızda, kilitlenme daha yüksek bir olasılık yoktur.

Işaretli hareket için kurtarma

Işaretli işlemler için veya hemen önce belirli bir işareti içeren bir veritabanı kurtarma hakkında daha fazla bilgi için bkz: Işaretli hareket içeren ilgili veritabanları kurtarma.

Ayrıca bkz.

Başvuru

BEGIN dağıtılmış hareket (Transact-sql)

BEGIN TRANSACTION (Transact-SQL)

RESTORE (Transact-SQL)

Kavramlar

Yedekleme ve geri yükleme sistem veritabanları (SQL Server)

Işlem günlüğü yedekleri uygulayın

Tam veritabanı yedekleme (SQL Server)

Işaretli hareket içeren ilgili veritabanları kurtarma