Aracılığıyla paylaş


cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)

Belirtilen SSNaralıkiçinde değişiklik her kaynak satırı için net değişim satır döndürür. Diğer bir deyişle, kaynak satır SSN aralıkiçinde birden çok değişiklik varsa, son satır içeriğini yansıtan tek bir satır işlevtarafından döndürülür.Örneğin, bir hareket SSNaralık güncelleştirmeleri bir sonraki işlemde ve kaynaktablo bir satır ekler, güncelleştirilmiş sütun değerlerini içeren tek bir satır, satır işlev bir veya daha fazla sütun döndürür.

Bu numaralandırma işlev bir kaynak tablo Değiştir veri yakalama için etkin ve ağ izleme belirtilen oluşturulur.NET izlemeyi etkinleştirmek için kaynak tablo birincil anahtar veya benzersiz dizinolması gerekir.işlev adından türetilir ve biçimini kullanan cdc.fn_cdc_get_net_changes_capture_instance, nerede capture_instance , kaynaktablo Değiştir veri yakalama için etkin olduğunda yakalama örnek için belirtilen değer. Daha fazla bilgi için, bkz. sys.sp_cdc_enable_table (Transact-SQL).

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

cdc.fn_cdc_get_net_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )

<row_filter_option> ::=
{ all
 | all with mask
 | all with merge
}

Bağımsız değişkenler

  • from_lsn
    sonuç kümesieklemek için SSNaralık düşük bitiş noktası temsil eden SSN . from_lsnis binary(10).

    İçinde yalnızca satırları HDM. [[capture_instance] _ct tablo içinde bir değerle değiştirmek __$start_lsn değerinden büyük veya eşit from_lsn sonuç kümesidahil.

  • to_lsn
    sonuç kümesieklemek için SSNaralık yüksek bitiş noktası temsil eden SSN . to_lsnis binary(10).

    İçinde yalnızca satırları HDM. [[capture_instance] _ct tablo içinde bir değerle değiştirmek __$start_lsn küçük veya eşit from_lsn veya eşit to_lsn sonuç kümesidahil.

  • <row_filter_option> :: = {tüm | tüm maskesiyle | tüm birleştirme ile}
    meta veriler sütunları yanı sıra sonuç kümesidöndürülen satırların içeriğini yöneten bir seçenek.Aşağıdakilerden biri olabilir:

    • Tümü
      Satır ve satır meta veriler sütunlarında uygulamak için gerekli işlemi son değişikliği SSN döner __$start_lsn ve $operation.sütun$update_mask olan her zaman null.

    • Tüm maskesi ile
      Satır ve satır meta veriler sütunlarında uygulamak için gerekli işlemi son değişikliği SSN döner __$start_lsn ve $operation.Buna ek olarak, güncelleştirme işlemi ne zaman verir ($operation = 4) güncelleştirmede değişiklik yakalanan sütunları döndürülen değeri işaretlenmiş __$update_mask.

    • Tüm birleştirme ile
      meta veriler sütunları satıra son değişikliği SSN verir $start_lsn.sütun$operation iki değerden biri olacaktır: 1 silme ve değişikliği uygulamak için gereken işlem bir ekleme veya güncelleştirme olduğunu göstermek için 5.sütun__$update_mask olan her zaman null.

      Mantığı kesin işlem belirli bir değişiklik için belirlemek için sorgu karmaşıklık ekler çünkü bu seçenek Değiştir veri uygulamak için gerekli bir ekleme veya güncelleştirme işlemdir, ancak açıkça birbirinden ayırt gerekli değildir göstermek için yeterli olduğunda sorgu performansını artırmak için tasarlanmıştır.Bu seçenek hedef ortamlarda birleştirme işlemi gibi doğrudan kullanılabilir olduğu en çekici bir SQL Server 2008 ortamı.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

__$start_lsn

binary(10)

SSN değişikliği yürütme hareket ile ilişkili.

Tüm değişiklikleri aynı harekette kaydedilmiş aynı yürütme SSNpaylaşın.Örneğin, kaynak tablo üzerinde güncelleştirme işlemi iki satır iki sütunu değiştiriyorsa, dört satır, her biri aynı tablo Değiştir içerecek __$start_lsn değer.

__$seqval

binary(10)

Bir hareket içinde satır değişiklikleri sipariş etmek için kullanılan sıra değeri.

__$operation

int

hedef veri kaynakDeğiştir veri satırı uygulamak için gerekli veri işleme dili (DML) işlemi tanımlar.

Varsa değeri row_filter_option parametresi all veya all with mask, bu sütun değeri, aşağıdaki değerlerden biri olabilir:

1 = delete

2 = Ekle

4 = güncelleştirme

Varsa değeri row_filter_option parametresi all with merge, Bu sütun bir değer aşağıdaki değerlerden biri olabilir:

1 = delete

5 = INSERT veya update

Bu satır zaten varsa ve yalnızca güncelleştirilmesi mı sunmak ve eklenmeli mi satırı şu anda değil bilinmiyor, 5 değeri gösterir.

__$update_mask

varbinary(128)

Yakalama örnekiçin tanımlanan her yakalanan sütun karşılık gelen bit bit maskesi.Bu değer tüm bitleri küme 1 zaman tanımladığı __$operation = 1 veya 2.Zaman __$operation 3 veya 4, değişen sütun karşılık gelen bitlerinin küme 1 yalnızca =.

<Yakalanan kaynak tablo sütunları>

değişir

Yakalama örnek oluşturulduğunda yakalanan sütun olarak tanımlanan sütunları kaynaktablo işlev tarafından döndürülen kalan sütunları olan. Hiçbir sütun yakalanan sütun listede belirtilmiş olması durumunda kaynak tablo tüm sütunları döndürülür.

İzinler

Üyelik gerektiren sysadmin sabit sunucu rolü veya db_owner veritabanı rolüsabit.Diğer tüm kullanıcılar için kaynak tablo yakalanan tüm sütunların select izni gerektirir ve yakalama örnek gating rol tanımlanmışsa, bu veritabanı rolüüyeliği.Arayan kaynak verileri görüntüleme iznine sahip değil işlev hata 208 (Geçersiz nesne adı) döndürür.

Açıklamalar

Belirtilen SSN aralık içinde değişiklik yakalama örnekiçin zaman çizelgesi izleme düşmüyor, işlev hata 208 (Geçersiz nesne adı) döndürür.

Örnekler

Aşağıdaki örnek işlevkullanancdc.fn_cdc_get_net_changes_HR_Department net değişiklikleri bildirmek için yapılan kaynaktablo HumanResources.Department sırasında bir saat aralığı.

İlk, saat aralığının başlangıcını işaretler içinGETDATEişlev kullanılır. kaynaktablobirkaç DML deyimlerini uygulandıktan sonra GETDATEsonuna kadar tanımlamak için yenidenişlev çağrılırsa saat aralığını. işlevsys.fn_cdc_map_time_to_lsn sonra SSN değerleri tarafından sınırlanan bir değişiklik veri yakalama sorgu aralık saat aralığını eşleştirmek için kullanılır. Son olarak, işlev cdc.fn_cdc_get_net_changes_HR_Department Sorgulanan elde net değişiklikleri için kaynak tablo saat aralığı.Eklenen ve ardından silinmiş satır işlevtarafından döndürülen sonuç kümesi görünmüyor dikkat edin.Birincisi eklenir ve bir sorgu penceresi içinde silinen satır aralığı için kaynak tablo net değişiklik nedeni budur.Bu örnek çalıştırmadan önce ilk örnekte b çalışmalıdır sys.sp_cdc_enable_table (Transact-SQL).

USE AdventureWorks2008R2;
GO
DECLARE @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10);
-- Obtain the beginning of the time interval.
SET @begin_time = GETDATE() -1;
-- DML statements to produce changes in the HumanResources.Department table.
INSERT INTO HumanResources.Department (Name, GroupName)
VALUES (N'MyDept', N'MyNewGroup');

UPDATE HumanResources.Department
SET GroupName = N'Resource Control'
WHERE GroupName = N'Inventory Management';

DELETE FROM HumanResources.Department
WHERE Name = N'MyDept';

-- Obtain the end of the time interval.
SET @end_time = GETDATE();
-- Map the time interval to a change data capture query range.
SET @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @begin_time);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);

-- Return the net changes occurring within the query window.
SELECT * FROM cdc.fn_cdc_get_net_changes_HR_Department(@from_lsn, @to_lsn, 'all');