Aracılığıyla paylaş


sys.fn_net_changes_<capture_instance> (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Ağ için wrapperlar sorgu fonksiyonlarını değiştirir . Bu fonksiyonları oluşturmak için gereken betikler, depolanan sys.sp_cdc_generate_wrapper_function prosedür tarafından oluşturulur. Oluşturulma sys.fn_net_changes_<capture_instance>için kullanılan depolanmış prosedür hakkında daha fazla bilgi için bkz. sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL söz dizimi kuralları

Sözdizimi

  
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all with mask  
  | all with merge  
}  

Arguments

start_time

Sonuç kümesine dahil edilecek değişiklik tablosu girişlerinin aralığının en düşük uç noktasını temsil eden datetime değeri.

Değişim tablosundaki cdc.<capture_instance>_CT yalnızca ilişkili taahhüt süresi kesin start_time'den büyük olan satırlar sonuç kümesine dahil edilir.

Bu argüman için NULL değeri sağlanırsa, sorgu aralığının düşük uç noktası, yakalama örneği için geçerli aralığın düşük uç noktasına karşılık gelir.

Eğer herhangi birinin @start_time veya @end_time parametrelerinin değeri en düşük LSN veya en yüksek LSN zamanının ötesindeyse, üretilen wrapper fonksiyonlarının çalıştırılması hatayla 313 döner: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Bu hata geliştirici tarafından işlenmelidir.

end_time

Sonuç kümesine dahil edilecek değişiklik tablosu girişlerinin en yüksek uç noktasını temsil eden datetime değeri.

Bu parametre, script oluşturulduğunda seçilen değere bağlı olarak iki anlamdan birini @closed_high_end_pointsys.sp_cdc_generate_wrapper_function alabilir:

  • @closed_high_end_point = 1

    Değişim tablosunda cdc.<capture_instance>_CT yalnızca __$start_lsn değeri olan ve karşılık gelen taahhüt süresi start_time'den az veya eşit olan satırlar sonuç kümesine dahil edilir.

  • @closed_high_end_point = 0

    Sadece değişim tablosunda cdc.<capture_instance>_CT __$start_lsn değeri ve karşılık gelen taahhüt süresi start_time'den çok daha az olan satırlar sonuç kümesine dahil edilir.

Bu argüman için NULL değeri sağlanırsa, sorgu aralığının yüksek uç noktası, yakalama örneği için geçerli aralığın yüksek uç noktasına karşılık gelir.

Eğer herhangi birinin @start_time veya @end_time parametrelerinin değeri en düşük LSN veya en yüksek LSN zamanının ötesindeyse, üretilen wrapper fonksiyonlarının çalıştırılması hatayla 313 döner: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Bu hata geliştirici tarafından işlenmelidir.

<row_filter_option> ::= { hepsi | hepsi maske ile | hepsi birleşme ile }

Meta veri sütunlarının içeriğini ve sonuç kümesinde döndürülen satırları yöneten bir seçenek. Aşağıdaki seçeneklerden biri olabilir:

all
İçerik sütunlarındaki değişen bir satırın son içeriğini ve meta veri sütunundaki satırı uygulamak için gereken işlemi __CDC_OPERATION.

hepsi maske ile
İçerik sütunlarındaki tüm değiştirilen satırların nihai içeriğini ve meta veri sütunundaki her satırı uygulamak için gereken işlemi __CDC_OPERATION. Eğer wrapper fonksiyonunu oluşturmak için betik oluşturduğunuzda bir güncelleme bayrağı listesi belirtildiyse, bu seçenek güncelleme maskesini doldurmak için gereklidir.

hepsi birleşme ile
İçerik sütunlarındaki tüm değiştirilen satırların nihai içeriğini döndürür.

__CDC_OPERATION sütunu aşağıdaki iki değerden biri olacaktır:

  • D, eğer satır silinmesi gerekiyorsa.

  • M, eğer satır eklenmesi veya güncellenmesi gerekiyorsa.

Hedefe bir değişiklik uygulamak için ekleme veya güncelleme gerekip gerekmediğini belirleme mantığı, sorgu karmaşıklığını artırır. Ekleme ve güncelleme işlemlerini ayırt etmek gerekmediğinde performansı artırmak için bu seçeneği kullanın. Bu yaklaşım, doğrudan birleştirme operasyonunun mevcut olduğu hedef ortamlarda en iyi şekilde çalışır.

Döndürülen Tablo

Sütun adı Sütun türü Description
<Sütunlar @column_list> Değişir column_list argümanında tanımlanan sütunlar, sp_cdc_generate_wrapper_function wrapper oluşturmak için script oluşturulduğunda çağırılır. Eğer column_list NULL ise, takip edilen tüm kaynak sütunları sonuç kümesinde görünür.
__CDC_OPERATION nvarchar(2) Hedef ortama satırın uygulanması için hangi işlemin gerekeceğini gösteren bir işlem kodu. İşlem, aşağıdaki çağrıda sağlanan argümanın değerine göre değişecektir row_filter_option :

row_filter_option = 'hepsi', 'hepsi maskeli'

'D' - silme işlemi

'I' - işlem ekle

'BM' - operasyonu güncelleme

row_filter_option = 'hepsi birleşmele'

'D' - silme işlemi

'M' - ya işlem başlat ya da işlemi güncelle
<Sütunlar @update_flag_list> bit Sütun adına _uflag ekleyerek adlandırılan bir bit bayrağı. Bayrak yalnızca row_filter_option= 'hepsi maskeli' ve __CDC_OPERATION = 'UN' olduğunda NULL olmayan bir değer alır. İlgili sütun sorgu penceresinde değiştirildiyse 1 olarak ayarlanır. Aksi takdirde, 0.

Açıklamalar

Bu fonksiyon, fn_net_changes_<capture_instance> sorgu fonksiyonu için cdc.fn_cdc_get_net_changes_<capture_instance> bir wrapper görevi görür. Saklanan prosedür, sys.sp_cdc_generate_wrapper wrapper için betik oluşturmak için kullanılır.

Wrapper fonksiyonları otomatik olarak oluşturulmaz. Wrapper fonksiyonları oluşturmak için yapmanız gereken iki şey vardır:

  1. Wrapper oluşturmak için betikleri oluşturmak için saklanan prosedürü çalıştırın.

  2. Wrapper fonksiyonunu oluşturmak için betikleri çalıştırın.

Wrapper fonksiyonları, kullanıcıların LSN değerleri yerine tarih ve zaman değerleriyle sınırlanan bir aralık içinde gerçekleşen değişiklikleri sistematik olarak sorgulamalarını sağlar. Wrapper fonksiyonları, verilen tarih saati değerleri ile sorgu fonksiyonlarına argüman olarak dahili olarak ihtiyaç duyulan LSN değerleri arasında tüm gerekli dönüşümleri gerçekleştirir. Wrapper fonksiyonları değişim veri akışını işlemek için seri olarak kullanıldığında, aşağıdaki konvansiyon uygulandığı koşuluyla verilerin kaybedilmemesini veya tekrarlanmamasını sağlarlar: bir çağrıya ilişkili aralık değeri, @end_time sonraki çağrıya ilişkili aralık için değer olarak verilir @start_time .

Script oluştururken parametreyi @closed_high_end_point kullanarak, belirtilen sorgu penceresinde kapalı üst sınırı veya açık üst sınırı destekleyecek wrapperlar oluşturabilirsiniz. Yani, çıkarma aralığının üst sınırına eşit commit süresine sahip girişlerin aralıklara dahil edilip edilmeyeceğine karar verebilirsiniz. Varsayılan olarak üst sınır eklenir.

Net changes wrapper fonksiyonu tarafından döndürülen sonuç kümesi, yalnızca wrapper oluşturulduğunda içinde @column_list olan takip edilen sütunları döndürür. Eğer @column_list NULL ise, takip edilen tüm kaynak sütunları döner. Kaynak sütunların, ardından bir veya iki karakterli bir sütun olan __CDC_OPERATION adlı bir işlem sütunu gelir; bu sütun işlemi tanımlar.

Daha sonra bit bayrakları, parametrede @update_flag_listtanımlanan her sütun için sonuç kümesine eklenir. Net changes wrapper için, wrapper fonksiyonuna çağrıda kullanılan bayrak 'all' veya 'all merge' ise, bit bayrakları her zaman NULL @row_filter_option olur. Eğer @row_filter_option 'hepsi maskeli' olarak ayarlanmışsa ve __CDC_OPERATION 'D' veya 'I' ise, bayrağın değeri de NULL olur. Eğer __CDC_OPERATION 'UN' ise, net güncelleme işleminin sütunda değişiklik yapıp yapmadığına bağlı olarak bayrak 1 veya 0 olarak ayarlanır.

Değişiklik veri yakalama yapılandırma şablonu 'Şema için CDC Wrapper TVF'lerini örnekle', bir şemanın tanımlı sorgu fonksiyonları için tüm wrapper fonksiyonları için CREATE betiklerini elde etmek üzere saklanan sp_cdc_generate_wrapper_function prosedürün nasıl kullanılacağını gösterir. Şablon bu betikleri oluşturur. Şablonlar hakkında daha fazla bilgi için Template Explorer'a bakınız.

Wrapper fonksiyonları sys.fn_all_changes_<capture_instance> ve sys.fn_net_changes_<capture_instance> sistem fonksiyonlarına cdc.fn_cdc_get_all_changes_<capture_instance> bağlıdır ve cdc.fn_cdc_get_net_changes_<capture_instance>. Eğer çağrı sırasında sağlanan LSN aralığı uygun cdc.fn_cdc_get_all_changes_<capture_instance> değilse cdc.fn_cdc_get_net_changes_<capture_instance>veya 313 hatası beklenmektedir. Parametre lsn_value en düşük LSN veya en yüksek LSN zamanının ötesindeyse, bu fonksiyonların çalıştırılması hatayla 313 döner: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Bu hata geliştirici tarafından işlenmelidir.

Ayrıca Bkz.