İşaretli işlemler (tam kurtarma modeli) kullanma

Bu konu yalnızca ilgilidir SQL Server veritabanları, kullanıyor tam veya toplu oturum kurtarma modelleri.

İki veya daha fazla veritabanları için ilgili güncelleştirmeler 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şaretinden sonra kabul edilen herhangi bir hareket kaybeder.Hareketleri işaretleme yalnızca ilişkili veritabanlarını test edilirken veya yakın zamanda tamamlanan hareketlerin kaybetmeyi uygundur.

İlgili işlemleri ilgili her veritabanında düzenli olarak işaretleme veritabanlarında bir dizi ortak kurtarma noktaları oluşturur.İşlem işaretleri hareket günlüğüne kaydedilir ve günlük yedeklere dahil.De olay bir felaket, her veritabanı tutarlı bir noktaya onları kurtarmak için aynı hareket işareti geri yükleme yükleyebilirsiniz.

Not

Günlük yedeklemeler farklı veritabanları üzerinde birbirlerinden bağımsız olarak oluşturulan ve eş zamanlı olmak zorunda değil.

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

  • Bir veya daha fazla işlem günlüklerinin yok edilir.Veritabanları küme tutarlı bir duruma geri yükleme yüklemek zorunda saat son günlük yedeği.

  • Tüm geri yükleme yüklemek zorunda küme saat önceki aşamasında karşılıklı olarak tutarlı bir duruma veritabanlarının.

Önemli notÖnemli

Yapabilirsiniz kurtarmak ilgili veritabanları yalnızca işaretli hareket için değil, belirli bir noktaya saat.

"Oluşturma işaretli hareketlerin," işaretleme hareketlerinin nasıl oluşturulacağı hakkında daha fazla bilgi için bkz: Bu konuda daha sonra.

İşaretli hareketler kullanma tipik bir senaryo

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

  1. Tam veya fark veritabanı oluşturmak yedek her biri ilişkili veritabanlarını.

  2. Bir hareketi işaretle blok tüm veritabanlarında.

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

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

  5. Geri yükleme NOKTASINA günlüğe kaydeder.

İşaretli hareketler kullanma hakkında önemli noktalar

Hareket günlüğüne işaretleri adlı eklemeden önce aşağıdakileri göz önünde bulundurun:

  • Günlük alanı işlem işaretleri tükettiği için veritabanı kurtarma stratejisi içinde önemli bir rol oynadıkları hareketleri için bunları kullanın.

  • İşaretli bir hareket tamamlandıktan sonra bir satır eklenir logmarkhistory , tablo msdb.

  • İşaretli hareket aynı veritabanı sunucusu veya farklı sunucularda birden çok veritabanına yayılırsa, işaretler etkilenen tüm veritabanları günlüklerinde kaydedilmiş gerekir.

İşaretli hareketlerin oluşturma

İşaretli hareket oluşturmak için BEGIN TRANSACTION deyim ve WITH markAçıklamayan tümce tümce tümce.İsteğe bağlı Açıklama işareti metin açıklamasıdır.Hareket için bir işareti adı gereklidir.İşareti adı yeniden kullanılabilir.İşlem günlüğü işareti adı, açıklaması, veritabanı, kullanıcı, tarih saat bilgisi ve günlük sıra numarası (SSN) kaydeder.Datetime bilgi işareti adı ile birlikte işareti benzersiz olarak tanımlamak için kullanılır.

İşaretli işlemler küme veritabanları oluşturmak için:

  1. BAŞLAMAK tran hareket adı deyim ve yan tümce tümce tümcesi ile İŞARETLE

    BAŞLAMAK tran deyim iç içe new_mark_name İle işaretlemek içinde varolan bir hareket.Değeri new_mark_name olup hareket işareti adını bile hareket sahip bir işlem adı.

    Not

    Bir ikinci iç içe başlamak tran sorun varsa...İŞARETİYLE, bu deyim atlanır ancak bir uyarı iletisi neden olur.

  2. Tüm veritabanlarında bir güncelleştirme çalıştırmak küme.

    Yalnızca sunucu örnek üzerinde işlem günlükleri için özel hareket işareti eklenir nereden başlamak tran...İŞARETİ ile deyim yürütülür.Bu sunucu örnek üzerinde işaretli hareket tarafından güncelleştirilen her veritabanı işlem günlüğünün hareket işareti yerleştirilir.Veritabanları farklı sunucu örnekleri ü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 AdventureWorks2008R2;
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 AdventureWorks2008R2
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

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

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

Hareket işareti adı otomatik olarak diğerine dağınık olmayan sunucu olarak hareket vardır yayılır.Diğer sunuculara yaymak için işareti zorlamak için bir saklı yordam başlamak tran içeren yazılmalıdır ad deyim ile işaretler.Saklı yordam sonra kaynak sunucu işlem kapsam altında uzak sunucuda çalıştırılmalıdır olduğunu.

Örneğin, üzerinde birden çok örneğini varolan bir bölümlenmiş veritabanı göz önünde SQL Server.Her örnek adlı bir veritabanı coyote.İlk olarak, her veritabanında saklı yordam, örneğin, oluşturma 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

Next, create stored procedure sp_MarkAll containing a transaction that places a mark in every database.sp_MarkAll can be run from any of the instances.

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

Yapılıyor bir dağıtılmış işlem iki aşamada gerçekleşir: hazırlamak ve yürütme.İşaretlenen bir işlem tamamlandığında, her veritabanı işaretli hareket için yürütme günlük kaydı günlük bir noktada yerleştirilen hiçbir şüpheli hareketlerin günlükler de bulunduğu.Bu noktada, kaydedilmiş bir günlük görünür, ancak başka bir günlüğüne kabul edilen hiçbir hareket olduğunu garanti edilir.

İşaretli hareket yürütme sırasında bunu aşağıdaki adımları:

  1. Tüm yeni takılması işaretleme hareketinin aşama hazırlamak hazırlar ve tamamlar.

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

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

  4. İşaretli hareket hazır ve kaydedilmiş.

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

Birden çok veritabanı span işaretli hareketler tarafından oluşturulan takılması işlem sunucunun performansını işleme azaltabilirsiniz.

İşaretli işlemler aynı anda çalıştırmanızı öneririz.Aynı anda yapılıyor diğer dağıtılmış çıkmaz işaretli hareketler dağıtılmış bir işaretli hareket kaydetme mümkün ancak nadir saat.Bu durumda, işaretleme hareket çıkmaz seçilen kurban ve geri alınır.Bu hata oluştuğunda uygulama işaretli hareket yeniden deneyebilirsiniz.Birden fazla işaretli hareketlerin ne zaman çalışın yürütme aynı anda, çıkmaz daha yüksek bir olasılık vardır.

Bir işaretli hareket için kurtarma

İşaretli hareketler için veya hemen önce belirli bir işareti içeren bir veritabanı kurtarmak hakkında daha fazla bilgi için bkz: Bir işaretli hareket için kurtarma.