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


cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

A következőkre vonatkozik:SQL Server

Egy sort ad vissza a forrástáblára alkalmazott minden módosításhoz a megadott naplóütemezési szám (LSN) tartományon belül. Ha egy forrássor több módosítást is végrehajtott az intervallum alatt, az egyes módosítások a visszaadott eredményhalmazban lesznek ábrázolva. A módosítási adatok visszaadása mellett négy metaadatoszlop biztosítja a módosításokat egy másik adatforrásra való alkalmazásához szükséges információkat.

A sorszűrési beállítások szabályozzák a metaadatoszlopok tartalmát és az eredményhalmazban visszaadott sorokat. Ha az minden sorszűrő beállítás meg van adva, minden módosításnak pontosan egy sora van a módosítás azonosításához. Ha az az összes frissítési régi beállítás meg van adva, a frissítési műveletek két sorként jelennek meg: az egyik a rögzített oszlopok értékeit tartalmazza a frissítés előtt, a másik pedig a rögzített oszlopok értékeit tartalmazza a frissítés után.

Ez az enumerálási függvény akkor jön létre, amikor egy forrástábla engedélyezve van az adatrögzítés módosításához. A függvény neve származik, és cdc.fn_cdc_get_all_changes_<capture_instance> formátumot használja, ahol capture_instance a rögzítési példányhoz megadott érték, amikor a forrástábla engedélyezve van az adatrögzítés módosításához.

Transact-SQL szintaxis konvenciói

Szintaxis

cdc.fn_cdc_get_all_changes_<capture_instance> ( from_lsn , to_lsn , '<row_filter_option>' )

<row_filter_option> ::=
    { all
      | all update old
    }

Érvek

from_lsn

Az LSN-érték, amely az eredményhalmazba belefoglalandó LSN-tartomány alacsony végpontját jelöli. from_lsn bináris(10) .

Csak a cdc sorai. [capture_instance]_CT__$start_lsn értéknél nagyobb vagy egyenlő változástáblát az eredményhalmaz tartalmazza.

to_lsn

Az LSN-érték, amely az eredményhalmazba belefoglalandó LSN-tartomány magas végpontját jelöli. to_lsn bináris(10).

Csak a cdc sorai. [capture_instance]_CT__$start_lsnfrom_lsn-nál nagyobb vagy egyenlő, to_lsn vagy annál kisebb értékű változástáblát az eredményhalmaz tartalmazza.

<row_filter_option>

A metaadatoszlopok tartalmát és az eredményhalmazban visszaadott sorokat szabályozó beállítás.

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

  • az összes

    A megadott LSN-tartományon belüli összes módosítást adja vissza. Frissítési művelet miatti módosítások esetén ez a beállítás csak az új értékeket tartalmazó sort adja vissza a frissítés alkalmazása után.

  • az összes régi frissítése

    A megadott LSN-tartományon belüli összes módosítást adja vissza. Frissítési művelet miatti módosítások esetén ez a beállítás a frissítés előtti oszlopértékeket tartalmazó sort és a frissítést követő oszlopértékeket tartalmazó sort is visszaadja.

Visszaadott tábla

Oszlop neve Adattípus Leírás
__$start_lsn bináris(10) A módosításhoz társított véglegesítési LSN, amely megőrzi a módosítás véglegesítési sorrendjét. Az ugyanabban a tranzakcióban lekötött módosítások ugyanazzal a véglegesítési LSN-értékkel osztoznak.
__$seqval bináris(10) Egy tranzakció sorának módosításának rendeléséhez használt sorrendérték.
__$operation Azonosítja az adatmanipulációs nyelv (DML) műveletet, amely a változási adatok sorának a céladatforrásra való alkalmazásához szükséges. Az alábbi értékek egyike lehet:

1 = törlés
2 = beszúrás
3 = frissítés (a rögzített oszlopértékek oszlopértékek a frissítési művelet előtt). Ez az érték csak akkor érvényes, ha az "összes frissítés régi" sorszűrő beállítás meg van adva.
4 = frissítés (a rögzített oszlopértékek oszlopértékek a frissítési művelet után)
__$update_mask varbinary(128) Egy bitmaszk, amely egy bittel felel meg a rögzítési példányhoz azonosított összes rögzített oszlopnak. Ez az érték az összes definiált bitet 1 értékre állítja, ha __$operation1 vagy 2. Ha __$operation3 vagy 4, csak a módosított oszlopoknak megfelelő bitek lesznek 1.
<captured source table columns> Változik A függvény által visszaadott fennmaradó oszlopok a rögzítési példány létrehozásakor azonosított rögzített oszlopok. Ha a rögzített oszloplistában nem adott meg oszlopokat, a rendszer a forrástábla összes oszlopát visszaadja.

Engedélyek

A sysadmin rögzített kiszolgálói szerepkörben vagy db_owner rögzített adatbázis-szerepkörben való tagság szükséges. Az összes többi felhasználóhoz SELECT engedélyre van szükség a forrástábla összes rögzített oszlopához, és ha a rögzítési példányhoz egy beszűkítési szerepkör van meghatározva, akkor az adatbázis-szerepkör tagsága szükséges. Ha a hívó nem rendelkezik engedéllyel a forrásadatok megtekintéséhez, a függvény a 229-s hibát adja vissza:

The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '<DatabaseName>', schema 'cdc'.

Megjegyzések

Az adattípusú oszlopok kép, szövegés ntext mindig NULL értéket kapnak, ha __$operation1 vagy __$operation3. Az adattípusú oszlopok varbinary(max), varchar(max)vagy nvarchar(max)NULL értéket kapnak, ha __$operation3, kivéve, ha az oszlop a frissítés során módosult. Ha __$operation1, ezek az oszlopok a törlés időpontjában lesznek hozzárendelve az értékükhöz. A rögzített példányban szereplő számított oszlopok mindig NULLértékkel rendelkeznek.

A 313-ás hiba akkor várható, ha a megadott LSN-tartomány nem megfelelő cdc.fn_cdc_get_all_changes_<capture_instance> vagy cdc.fn_cdc_get_net_changes_<capture_instance>hívásakor. Ha a lsn_value paraméter túllépi a legalacsonyabb LSN vagy a legmagasabb LSN idejét, akkor a függvények végrehajtása a 313-at adja 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.

Példák

Számos SQL Server Management Studio-sablon érhető el, amelyek bemutatják az adatrögzítési lekérdezési függvények használatát. Ezek a sablonok a Nézet menüben érhetők el a Management Studióban. További információ: Template Explorer.

Ez a példa a Enumerate All Changes for Valid Range Templatemutatja be. A cdc.fn_cdc_get_all_changes_HR_Department függvénnyel jelenti a rögzítési példány HR_Departmentjelenleg elérhető módosításait, amelyek a HumanResources.Department adatbázisban AdventureWorks2025 forrástáblához lesznek definiálva.

-- Enumerate All Changes for Valid Range Template
USE AdventureWorks2022;
GO

DECLARE @from_lsn AS BINARY (10), @to_lsn AS BINARY (10);
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');
SET @to_lsn = sys.fn_cdc_get_max_lsn();

SELECT *
FROM cdc.fn_cdc_get_all_changes_HR_Department(@from_lsn, @to_lsn, N'all');
GO