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


sys.fn_net_changes_<capture_instance> (Transact-SQL)

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>_CT vá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:

  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 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.

Lásd még: