Aracılığıyla paylaş


cdc.fn_cdc_get_net_changes_ < capture_instance > (Transact-SQL)

Belirtilen SSN aralık içinde değiştirilen her kaynak satırı için net değişim satır döndürür.Diğer bir deyişle, kaynak satır birden çok değişikliği sırasında SSN olduğunda aralık, son satırın içeriğini gösteren tek bir satır işlev tarafından döndürülür.Örneğin bir hareket içinde bir satır ekler, kaynak tablo ve bir sonraki işlem SSN aralığında bir veya daha çok sütun, satırdaki güncelleştirir, işlev güncelleştirilmiş sütun değerlerini içeren tek bir satır döndürür.

Bu numaralandırma işlev, bir kaynak tablo, değişiklik veri yakalama için etkinleştirilmişse ve net izleme belirtilen oluşturulur.Kaynak NET izlemeyi etkinleştirmek için tablo birincil anahtar veya benzersiz dizin olmalıdır.Işlev adından türetilir ve biçimi cdc.fn_cdc_get_net_changes_ kullanır.capture_instance, where capture_instance kaynak tablo değişiklik veri yakalama için etkinleştirildiğinde, yakalama örnek için belirtilen değer ' dir.Daha fazla bilgi için bkz:sys.sp_cdc_enable_table (Transact-SQL).

Topic link iconTransact-SQL sözdizimi kuralları

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
    The LSN that represents the low endpoint of the LSN range to include in the result set.from_lsn is binary(10).

    Yalnızca, satırları _CT cdc. [capture_instance tablo ile bir değer sıfırdan büyük veya eşit $ start_lsn __ değiştirmefrom_lsn Sonuçta içerdiği küme.

  • to_lsn
    The LSN that represents the high endpoint of the LSN range to include in the result set.to_lsn is binary(10).

    Yalnızca, satırları _CT cdc. [capture_instance için tablo __ $ start_lsn daha az veya ona eşit bir değer değiştirmefrom_lsn ya da eşit to_lsn Sonuçta içerdiği küme.

  • <row_filter_option> :: = {tümü | tüm maskesi | tüm birleştirme ile}
    meta veriler sütunları yaný sýra satırları içeriğini yöneten bir seçenek sonucu döndürdü küme.Aşağıdaki seçeneklerden herhangi biri olabilir:

    • tüm
      Son değişiklik SSN satır $ start_lsn __ "meta veriler sütunları satır uygulamak için gerekli işlem ve __ $ işlemi için döndürür.Sütun __ $ update_mask her zaman null olur.

    • tüm maske ile
      Son değişiklik SSN satır $ start_lsn __ "meta veriler sütunları satır uygulamak için gerekli işlem ve __ $ işlemi için döndürür.Buna ek olarak, bir güncelleştirme işlemi ne zaman verir (__ $ işlemi = 4) güncelleştirmede değişiklik yakalanan sütunları __ $ update_mask döndürülen değer olarak işaretlenmiş.

    • tüm birleştirme
      Son değişiklik SSN $ start_lsn __ "meta veriler sütunları satır döndürür.Sütun __ $ işlemi iki değerden biri olabilir: Sil ve değişikliği uygulamak için gereken operasyonun bir ekleme veya güncelleştirme olduğunu belirtmek için 5 1. Sütun __ $ update_mask her zaman null olur.

      Mantığı, belirli bir değişiklik için kesin işlem belirlemek için sorgunun karmaşıklığını çünkü, bu seçenek veri değişikliği uygulamak için gereken işlem, bir ekleme veya güncelleştirme olduğunu, ancak açıkça ikisi arasında ayrım yapmak gerekli değil) göstermek yeterli olduğunda, sorgu performansını artırmak için tasarlanmıştır.Bu seçenek, bir mektup birleştirme işlemi gibi doğrudan olduğu hedef ortamlarda en çekici, bir SQL Server 2008 ortamı.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

__ $ start_lsn

binary(10)

Değiştirmek için Kayıt işlemle ilişkili SSN.

Aynı işlemde kaydedilmiş tüm değişiklikleri aynı yürütme SSN paylaşır.Örneğin, iki sütun içindeki iki satır kaynak tablo bir güncelleştirme işleminde değiştirir, değişiklik tablonun her __ $ start_lsn değeri aynı olan dört satır içerir.

__ $ seqval

binary(10)

Bir işlem içinde satır değişiklikleri sıralamak için kullanılan sıra değeri.

__ $ işlemi

int

Hedef veri kaynağına değişiklik veri satırı uygulamak için gerekli veri düzenleme Dil (DML) işlemini tanımlar.

Veya ile row_filter_option parametresinin değeri ise, bu değer maske sütun aşağıdaki değerlerden biri olabilir:

1 silme =

2 ekleme =

4 Güncelleştirmesi =

Row_filter_option parametresinin değeri tüm birleştirme ile bu sütundaki değer aşağıdaki değerlerden biri olabilir:

1 silme =

5 = Ekle'yi veya güncelleştirme

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

__ $ update_mask

varbinary(128)

Yakalanan yakalama örnek için tanımlanan her bir sütun karşılık gelen bir bit BIR bit maskesi.Bu değer 1 zaman küme tüm tanımlı bit olan __ $ işlemi = 1 veya 2.Zaman __ $ işlemi = 3 veya 4, bu bit yalnızca değişen sütunları karşılık gelen 1 olarak küme.

<Yakalanan bir kaynak tablo sütunları>

değişir

Işlev tarafından döndürülen kalan sütunları yakalama örnek oluşturulduğunda, yakalanan sütun olarak tanımlananların kaynak tablo sütunlarından ' dir.Hiçbir sütun, kaynak tüm sütunlar yakalanan sütun listesinde belirtildi, tablo döndürülür.

İzinler

Db_owner sabit veritabanı rolü veya sysadmin sabit sunucu rolü üyeliği gerekir.Diğer tüm kullanıcılar için kaynak yakalanan tüm sütunlara SELECT izni gerektirir tablo ve gating role yakalama örnek için tanımlanmışsa, rol üyeliği, veritabanı.Işlev, arayanın kaynak verilerini görüntüleme iznine sahip olduğunuzda, hata 208 (ınvalid object name) döndürür.

Remarks

Belirtilen SSN aralık içinde zaman çizelgesi yakalama örnek için izleme değişiklik Sonbahar, işlev hata 208 (ınvalid object name) döndürür.

Örnekler

Aşağıdaki örnek fonksiyonunu kullanır. cdc.fn_cdc_get_net_changes_HR_Department net değişim rapor için kaynak tablo çalışıldı HumanResources.Department Belirli bir saat aralığında.

Ilk olarak, GETDATE işlev, saat aralığı başlangıcını işaretlemek için kullanılır. Kaynak için birkaç DML deyimlerini uygulandıktan sonra tablo, GETDATE işlev, sonuna kadar saat aralığını tanımlamak için yeniden adlandırılır. Işlev sys.fn_cdc_map_time_to_lsn sonra saat aralık SSN değerlerle ilişkisindeki değişiklik veri yakalama sorgu aralık eşleştirmek için kullanılır.Son olarak, bu işlev cdc.fn_cdc_get_net_changes_HR_Department Kaynak tablo net değişiklikler için saat aralığı edinmek üzere sorgulanır. Eklenen ve sonra silinen satır işlev tarafından döndürülen sonuç kümesinde görünmeyen dikkat edin.Bu, çünkü bu kaynak tablosundaki net değişiklik aralığı için önce eklenen ve ardından bir sorgu penceresi içinde silinmiş bir satır oluşturur.Bu bir örnek başlatmadan önce B örnekte ilk kez çalıştırmanız gerekir sys.sp_cdc_enable_table (Transact-SQL).

USE AdventureWorks;
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');