Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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>_CTvá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_CTtá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:
Futtatjuk a tárolt eljárást, hogy generáljuk a wrapper elkészítéséhez szükséges szkriptet.
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.