Aracılığıyla paylaş


sys.fn_all_changes_<capture_instance> (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Tüm değişiklikler sorgu fonksiyonları için wrapperlar. 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_all_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_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

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 start_time'den fazla taahhüt süresi 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, wrapper fonksiyonu için yaratma betikini oluşturmak için çağrıldığında seçilen @closed_high_end_pointsys.sp_cdc_generate_wrapper_function değere bağlı olarak iki olası anlamdan birini alabilir:

  • @closed_high_end_point = 1

    Değişim tablosundaki cdc.<capture_instance>_CT yalnızca ilişkili taahhüt süresi end_time'den az veya eşit olan satırlar sonuç kümesine dahil edilir.

  • @closed_high_end_point = 0

    Değişim tablosundaki cdc.capture_instance_CT yalnızca ilişkili taahhüt süresi kesin end_time'den 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 eski güncelle }

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
Belirtilen LSN aralığındaki tüm değişiklikleri döndürür. Güncelleme işlemi nedeniyle gerçekleşen değişiklikler için, bu seçenek yalnızca güncelleme uygulandıktan sonra yeni değerleri içeren satırı döndürür.

Tüm güncellemeler eski
Belirtilen LSN aralığındaki tüm değişiklikleri döndürür. Bir güncelleme işlemi nedeniyle gerçekleşen değişiklikler için, bu seçenek, güncelleme öncesi ve güncelleme sonrası sütun değerlerini içeren iki satırı döndürür.

Döndürülen Tablo

Sütun adı Sütun türü Description
__CDC_STARTLSN ikili (10) Değişiklikle ilişkili işlemin commit LSN'si. Aynı işlemde yapılan tüm değişiklikler aynı taahhüt LSN'yi paylaşır.
__CDC_SEQVAL ikili (10) Bir işlemde satır değişikliklerini sıralamak için kullanılan dizi değeri.
<Sütunlar @column_list> Değişir column_list argümanında tanımlanan sütunlar, sp_cdc_generate_wrapper_function envelopeper fonksiyonunu oluşturan betikten sonra çağrıldığında belirlenir.
__CDC_OPERATION nvarchar(2) Hedef ortama satırın uygulanması için gereken işlemi gösteren işlem kodu. Bu, çağrıda sağlanan argümanın değerine göre değişecektir row_filter_option

row_filter_option = 'hepsi'

'D' - silme işlemi

'I' - işlem ekle

'UN' - operasyonun yeni değerlerini güncelle

row_filter_option = 'hepsi eski güncelliyor'

'D' - silme işlemi

'I' - işlem ekle

'UN' - operasyonun yeni değerlerini güncelle

'UO' - operasyon eski değerlerini güncelle
<Sütunlar @update_flag_list> bit Bir bit bayrağı, sütun adına _uflag ekleyerek adlandırılır. Bayrak her zaman NULL olarak ayarlanır, __CDC_OPERATION 'D', 'I' ya da 'UO' olduğunda. __CDC_OPERATION 'UN' olduğunda, güncelleme ilgili sütunda değişiklik yarattıysa 1 olarak ayarlanır. Aksi takdirde, 0.

Açıklamalar

Bu fonksiyon, fn_all_changes_<capture_instance> sorgu fonksiyonu için cdc.fn_cdc_get_all_changes_<capture_instance> bir wrapper görevi görür. Saklanan prosedür, sys.sp_cdc_generate_wrapper wrapper oluşturmak için betikleri 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.

Tüm değişiklikler wrapper fonksiyonu tarafından döndürülen sonuç kümesi, değişim tablosunun __$start_lsn ve __$seqval sütunlarını sırasıyla __CDC_STARTLSN ve __CDC_SEQVAL sütunları olarak döndürür. Bunları yalnızca ambalaj oluşturulduğunda @column_list parametresinde görünen takip edilen sütunlarla takip eder. Eğer @column_list NULL ise, takip edilen tüm kaynak sütunları geri 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_list tanımlanan her sütun için sonuç kümesine eklenir. Tüm değişiklikler wrapperı için, bit bayrakları her zaman NULL olur__CDC_OPERATION eğer 'D', 'I' veya 'UO' ise. Eğer __CDC_OPERATION 'UN' ise, güncelleme işleminin sütunda değişiklik yapıp yaratmadığı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.