Megosztás a következőn keresztül:


sys.fn_all_changes_<capture_instance> (Transact-SQL)

A következőkre vonatkozik:SQL Server

Wrapperek az All Changes lekérdezési függvényekhez. A szükséges szkripteket a tárolt sys.sp_cdc_generate_wrapper_function eljárás generálja. További információért a létrehozáshoz használt tárolt eljárásról sys.fn_all_changes_<capture_instance>lásd sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL szintaxis konvenciók

Szemantika

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

Az a datetime érték, amely a változástábla bejegyzések tartományának alacsony végpontját jelenti, amelyet az eredményhalmazba kell beépíteni.

Csak azok a sorok kerülnek be a cdc.<capture_instance>_CT változástáblázatban, amelyekhez a hozzájuk tartozó elköteleződési idő nagyobb, mint start_time .

Ha ehhez az argumentumhoz NULL értéket adnak meg, a lekérdezési tartomány alacsony végpontja megfelel a lezáró példány érvényes tartományának alacsony végpontjának.

Ha bármelyik @start_time vagy @end_time vagy paraméter értéke meghaladja a legalacsonyabb LSN vagy legmagasabb LSN idejét, akkor a generált wrapper függvények végrehajtása 313 hibával tér vissza. Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function Ezt a hibát a fejlesztőnek kell kezelnie.

end_time

Az datetime érték, amely a változástábla bejegyzések tartományának legmagasabb végpontját jelenti, amelyet az eredményhalmazba kell beépíteni.

Ez a paraméter két lehetséges jelentést kaphat, attól függően, hogy milyen értéket választanak arra @closed_high_end_point , amikor sys.sp_cdc_generate_wrapper_function hívják meg a wrapper függvény létrehozó szkriptjét:

  • @closed_high_end_point = 1

    Csak azok a sorok szerepelnek a cdc.<capture_instance>_CT változástáblázatban, amelyekhez az együttműködési idő kevesebb vagy egyenlő end_time-nél.

  • @closed_high_end_point = 0

    Csak azok a sorok a változási cdc.capture_instance_CT táblázatban, amelyekhez a hozzárendelt idő rangelt kevesebb, mint end_time, kerülnek be az eredményhalmazba.

Ha ehhez az argumentumhoz NULL értéket adnak meg, akkor a lekérdezési tartomány legmagasabb végpontja megfelel a lezáró példány érvényes tartományának legmagasabb végpontjának.

Ha bármelyik @start_time vagy @end_time vagy paraméter értéke meghaladja a legalacsonyabb LSN vagy legmagasabb LSN idejét, akkor a generált wrapper függvények végrehajtása 313 hibával tér vissza. Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function Ezt a hibát a fejlesztőnek kell kezelnie.

<row_filter_option> ::= { mind | mind frissít régi }

Egy opció, amely szabályozza a metaadat-oszlopok tartalmát és az eredményhalmazban visszaadt sorokat.

A következő lehetőségek egyike lehet:

all
A megadott LSN-tartományon belüli összes módosítást adja vissza. Frissítési művelet miatt bekövetkező változásoknál ez az opció csak a frissítés alkalmazása után adja vissza azt a sort, amely tartalmazza az új értékeket.

Minden frissítés régi
A megadott LSN-tartományon belüli összes módosítást adja vissza. Frissítési művelet miatt bekövetkező változások esetén ez az opció visszaadja azokat a két sort, amelyek tartalmazzák az oszlopértékeket a frissítés előtt és után.

Visszajuttatott tábla

Oszlop név Oszloptípus Description
__CDC_STARTLSN bináris(10) A tranzakció szionálás LSN-je, amely a változáshoz kapcsolódik. Minden ugyanabban a tranzakcióban elkötelezett változás ugyanazt a commit LSN-t osztja meg.
__CDC_SEQVAL bináris(10) A sorváltozások sorrendjére szolgáló sorérték egy tranzakcióban.
<Oszlopok @column_list> varies Az oszlopok, amelyeket az column_list argumentumban azonosítanak arra vonatkozóan, sp_cdc_generate_wrapper_function amikor hívják a wrapper függvényt létrehozó szkriptet létrehozni.
__CDC_OPERATION nvarchar(2) Műveleti kód, amely jelzi a sor alkalmazásához szükséges műveletet a célkörnyezetben. Ez a hívásban megadott érv értéke szerint változik row_filter_option

row_filter_option = 'mind'

'D' - törlés művelet

'I' – behelyezett művelet

'UN' – új értékek frissítése

row_filter_option = 'minden frissítés régi'

'D' - törlés művelet

'I' – behelyezett művelet

'UN' – új értékek frissítése

'UO' – a művelet régi értékeinek frissítése
<Oszlopok @update_flag_list> bit Egy bit zászlót úgy nevezik el, hogy _uflag hozzáadunk az oszlop nevéhez. A zászló mindig NULL-ra van állítva, ha __CDC_OPERATION 'D', 'I', az 'UO' betűje. Ha __CDC_OPERATION 'UN', akkor 1-re van beállítva, ha a frissítés változást hozott a megfelelő oszlopban. Egyébként 0.

Megjegyzések

A fn_all_changes_<capture_instance> függvény a lekérdezési függvény csomagolásaként cdc.fn_cdc_get_all_changes_<capture_instance> szolgál. A sys.sp_cdc_generate_wrapper tárolt eljárást használják a wrapper létrehozásához szükséges szkriptet generálásához.

A wrapper függvények nem automatikusan készülnek. Két dolgot kell tenned a wrapper függvények létrehozásához:

  1. Futtatjuk a tárolt eljárást, hogy generáljuk a wrapper elkészítéséhez szükséges szkriptet.

  2. Futtatd a szkriptet, hogy ténylegesen létrehozd a wrapper függvényt.

A wrapper függvények lehetővé teszik a felhasználók számára, hogy rendszerszinten lekérdezéseket keressenek olyan változásokra, amelyek egy dátumidő-értékek által korlátozott intervallum alatt történtek LSN helyett. A wrapper függvények minden szükséges átalakítást végzik a megadott dátumidő-értékek és a lekérdezési függvények belső argumentumként szükséges LSN értékei között. Amikor a wrapper függvényeket sorban használják egy változás adatfolyamának feldolgozására, biztosítják, hogy ne veszjen el vagy ismétlődjön meg az adat, feltéve, hogy a következő konvenciót követik: az @end_time egy híváshoz tartozó intervallum értéke a következő híváshoz tartozó intervallum értékeként jelenik @start_time meg.

A @closed_high_end_point paraméter használatával a szkript létrehozásakor generálhatsz wrappereket, amelyek a megadott lekérdezési ablakon zárt vagy nyitott felső korlátot támogatnak. Vagyis eldöntheted, hogy azok a bejegyzések, amelyek elköteleződési ideje megegyezik a kivonási intervallum felső határával, bekerülnek-e az intervallumba. Alapértelmezés szerint a felső korlát is benne van.

Az eredményhalmaz, amelyet az all changes wrapper függvény ad, a változástáblázat __$start_lsn és __$seqval oszlopait adja vissza __CDC_STARTLSN és __CDC_SEQVAL oszlopként. Ezeket követi csak azok a követett oszlopok, amelyek a @column_list paraméterben jelentek meg a csomagolás generálásakor a paraméterekben. Ha @column_list NULL, akkor az összes követett forrásoszlop visszatér. A forrásoszlopokat egy műveletoszlop, __CDC_OPERATION követi, amely egy egy- vagy kétkarakteres oszlop, amely azonosítja a műveletet.

Bitzászlókat csatolnak az adott oszlop eredményhalmazához, amelyet a paraméterben azonosítottak @update_flag_list . Az All changes wrapper esetén a bit zászlók mindig NULL lesznek, ha __CDC_OPERATION 'D', 'I' vagy 'UO'. Ha __CDC_OPERATION 'UN', akkor a zászló 1-re vagy 0-ra lesz állítva, attól függően, hogy a frissítési művelet változást okozott-e az oszlopban.

A változásadat-rögzítő konfigurációs sablon, a 'Instantiate CDC Wrapper TVF-ek a sémához' megmutatja, hogyan lehet a sp_cdc_generate_wrapper_function tárolt eljárást használni a séma definiált lekérdezési függvényeinek összes burkolófüggvényéhez CREATE szkriptekhez. A sablon ezután létrehozza ezeket a szkripteket. További információkért a sablonokról lásd a Template Explorer-t.

A burkolók függvényei sys.fn_all_changes_<capture_instance> és sys.fn_net_changes_<capture_instance> a rendszerfüggvényektől cdc.fn_cdc_get_all_changes_<capture_instance> függenek.cdc.fn_cdc_get_net_changes_<capture_instance> 313-as hiba várható, ha az LSN tartomány nem megfelelő híváskor cdc.fn_cdc_get_all_changes_<capture_instance> vagy cdc.fn_cdc_get_net_changes_<capture_instance>. Ha a lsn_value paraméter meghaladja a legalacsonyabb LSN vagy legmagasabb LSN idejét, akkor ezeknek a függvényeknek a végrehajtása 313 hibával tér vissza: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Ezt a hibát a fejlesztőnek kell kezelnie.

Lásd még: