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
A net wrapper-jei megváltoztatják a lekérdezési függvényeket. 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_net_changes_<capture_instance>lásd sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Transact-SQL szintaxis konvenciók
Szemantika
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
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 szerepelnek a változástáblázatban cdc.<capture_instance>_CT , amelyekhez a hozzájuk tartozó elköteleződési idő szigorúan 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 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 burkolózó függvény létrehozásához szükséges szkriptet:
@closed_high_end_point = 1
Csak azok a sorok szerepelnek a változástáblában
cdc.<capture_instance>_CT, amelyek értéke __$start_lsn és egy hozzá tartozó elköteleződési idő, amely kisebb, mint start_time vagy egyenlő.@closed_high_end_point = 0
Az eredményhalmazba csak azok a sorok kerülnek bele a
cdc.<capture_instance>_CTváltozástáblában, amelyek értéke __$start_lsn és a hozzá tartozó kötelező idő szigorúan kevesebb, mint start_time .
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 maszkkal | mind merge-vel }
Egy olyan opció, amely szabályozza a metaadat-oszlopok tartalmát, valamint az eredményhalmazban visszatérő sorokat. A következő lehetőségek egyike lehet:
all
Visszaadja a megváltoztatott sor végső tartalmát a tartalomoszlopokban, valamint azt a műveletet, amely a metaadat-oszlopban a sor alkalmazásához szükséges __CDC_OPERATION.
mind maszkkal
Visszaadja az összes változtatott sor végső tartalmát a tartalomoszlopokban, valamint a metaadat-oszlop minden sorának alkalmazásához szükséges műveletet __CDC_OPERATION. Ha frissítési zászlólistát megadott a wrapper funkció létrehozásához szükséges szkript, ez az opció szükséges a frissítés maszkjának feltöltéséhez.
mind egyesüléssel
Visszaadja az összes változtatott sor végső tartalmát a tartalomoszlopokban.
A __CDC_OPERATION oszlop az alábbi két érték egyike lesz:
D, ha a sort törölni kell.
M, ha a sort be kell illeszteni vagy frissíteni.
Az a logika, amely eldönti, hogy szükség van-e beillesztésre vagy frissítésre a cél módosításához, növeli a lekérdezések összetettségét. Használd ezt a lehetőséget a jobb teljesítmény érdekében, amikor nem szükséges megkülönböztetni a becsatolás és frissítés műveleteket. Ez a megközelítés a legjobb olyan célkörnyezetekben, ahol közvetlenül elérhető az egyesülési művelet.
Visszajuttatott tábla
| Oszlop név | Oszloptípus | Description |
|---|---|---|
| <Oszlopok @column_list> | varies | Az oszlopok, amelyeket az column_list argumentumban azonosítanak, amikor sp_cdc_generate_wrapper_function hívják a script generálását a wrapper létrehozásához. Ha column_list NULL, az összes nyomon követett forrásoszlop megjelenik az eredményhalmazban. |
| __CDC_OPERATION | nvarchar(2) | Egy műveleti kód, amely megmutatja, melyik művelet szükséges a sor alkalmazásához a célkörnyezetben. A művelet az alábbi hívásban megadott érv row_filter_option értéke alapján változik: row_filter_option = 'mind', 'mind maszkkal' 'D' - törlés művelet 'I' – behelyezett művelet 'UN' – működés frissítése row_filter_option = 'mind összeolvadva' 'D' - törlés művelet 'M' – vagy behelyezed a műveletet, vagy frissítsd a műveletet |
| <Oszlopok @update_flag_list> | bit | Egy bitjelző, amelyet úgy neveznek el, hogy _uflag hozzáadnak az oszlop nevéhez. A zászló csak akkor vesz fel nem NULL értéket, amikor row_filter_option= 'mind maszkkal' és __CDC_OPERATION = 'UN'. 1-re van állítva, ha a megfelelő oszlopot módosították a lekérdezési ablakban. Egyébként 0. |
Megjegyzések
A fn_net_changes_<capture_instance> függvény a lekérdezési függvény csomagolásaként cdc.fn_cdc_get_net_changes_<capture_instance> szolgál. A sys.sp_cdc_generate_wrapper tárolt eljárást használják a wrapper szkriptjének létrehozására.
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 a net changes wrapper függvény ad, csak azokat a követett oszlopokat adja vissza, amelyek a csomagolót generálásakor tartalmazták @column_list . Ha @column_list NULL, akkor minden követett forrásoszlopot visszaadnak. A forrásoszlopokat egy műveletoszlop, __CDC_OPERATION követi, amely egy egy- vagy kétkarakteres oszlop, amely azonosítja a műveletet.
Bitjelzőket csatolnak az adott oszlop eredményhalmazához, amely a paraméterben @update_flag_listazonosítva van. A net changes wrapper esetén a bit zászlók mindig NULL lesznek, ha @row_filter_option a wrapper függvény hívásában használt zászló, az 'all' vagy 'all merge'. Ha @row_filter_option a 'mind maszkkal' van beállítva, és __CDC_OPERATION 'D' vagy 'I', akkor a zászló értéke is NULL lesz. Ha __CDC_OPERATION 'UN', akkor a zászló 1-re vagy 0-ra lesz állítva, attól függően, hogy a hálózati frissítési művelet változtatott-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.