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


Adatrögzítés módosítása és letiltása

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példány

Ez a cikk azt ismerteti, hogyan engedélyezheti és tilthatja le a módosítási adatrögzítést (CDC) egy adatbázishoz és egy táblához az SQL Serverhez és a felügyelt Azure SQL-példányhoz. Az Azure SQL Database esetében lásd a CDC-t az Azure SQL Databasemellett.

Engedélyek

A sysadmin engedélyek szükségesek a változásadat-rögzítés engedélyezéséhez vagy letiltásához az SQL Serveren és az Azure SQL Managed Instance-ben.

Adatbázis engedélyezése

Mielőtt létrehozhat egy rögzítési példányt az egyes táblákhoz, engedélyeznie kell az adatbázis adatrögzítésének módosítását.

Az adatrögzítés módosításának engedélyezéséhez futtassa a tárolt eljárást sys.sp_cdc_enable_db (Transact-SQL) az adatbázis-környezetben. Annak megállapításához, hogy egy adatbázisban már engedélyezett-e a CDC, kérdezze le a is_cdc_enabled oszlopot a sys.databases katalógusnézetben.

Ha egy adatbázis adatrögzítési funkciója engedélyezve van, a cdc séma, cdc felhasználó, metaadattáblák és egyéb rendszerobjektumok jönnek létre az adatbázishoz. A cdc séma tartalmazza a változásadat-rögzítés metaadat-tábláit, és miután a forrástáblák engedélyezve lettek a változásadatok rögzítéséhez, az egyes változástáblák adattárként szolgálnak a változásadatokhoz. A cdc séma a változásadatok lekérdezéséhez használt társított rendszerfüggvényeket is tartalmazza.

Az adatrögzítés módosításához kizárólag a cdc sémát és cdc felhasználót kell használni. Ha egy séma vagy egy cdc nevű adatbázis-felhasználó jelenleg létezik egy adatbázisban, a módosítási adatrögzítés csak akkor engedélyezhető az adatbázisban, ha a séma és/vagy a felhasználó elvetése vagy átnevezése nem történik meg.

-- ====
-- Enable Database for CDC
-- ====
USE MyDB
GO
EXEC sys.sp_cdc_enable_db
GO

Jegyzet

A CDC-vel kapcsolatos sablonok az SQL Server Management Studióban való kereséséhez lépjen Nézet, válassza Sablonkezelőlehetőséget, majd válassza SQL Server-sablonoklehetőséget. Az adatváltozás rögzítése egy almappa, amely tartalmazza a sablonokat

Adatbázis számára történő letiltás

Használja a sys.sp_cdc_disable_db (Transact-SQL)-t az adatbázis kontextusában, hogy leállítsa az adatbázis változásadatainak rögzítését. Az adatbázis CDC-jének letiltása előtt nem szükséges letiltani az egyes táblák CDC-jét. Az adatbázis CDC-jének letiltása eltávolítja az összes kapcsolódó változásadat-rögzítési metaadatot, beleértve a cdc felhasználót, sémát és a módosítási adatrögzítési feladatokat. A CDC által létrehozott összes gating szerepkört azonban nem távolítják el automatikusan, ezeket kifejezetten törölni kell. Annak megállapításához, hogy egy adatbázis rendelkezik-e CDC-vel, kérdezze le a is_cdc_enabled oszlopot a sys.databases katalógusnézetben.

CdC-kompatibilis adatbázis elvetése esetén a rendszer automatikusan eltávolítja az adatrögzítési feladatokat.

-- Disable Database for change data capture
USE MyDB
GO
EXEC sys.sp_cdc_disable_db
GO

Engedélyezés táblázathoz

Miután egy adatbázis engedélyezte a változásadatok rögzítését, a db_owner rögzített adatbázis-szerepkör tagjai létrehozhatnak egy rögzítési példányt az egyes forrástáblákhoz a tárolt eljárás sys.sp_cdc_enable_tablehasználatával. Annak megállapításához, hogy egy forrástábla már engedélyezve van-e a változásadatok rögzítéséhez, vizsgálja meg a is_tracked_by_cdc oszlopot a sys.tables katalógusnézetben.

Fontos

A sys.sp_cdc_enable_table tárolt eljárás argumentumairól további információt a sys.sp_cdc_enable_table (Transact-SQL)című cikkben talál.

Rögzítési példány létrehozásakor a következő beállításokat adhatja meg:

A forrástáblában lévő oszlopokatkell rögzíteni.

Alapértelmezés szerint a forrástábla összes oszlopa rögzített oszlopként van azonosítva. Ha csak az oszlopok egy részhalmazát kell nyomon követni, például adatvédelmi vagy teljesítménybeli okokból, használja a @captured_column_list paramétert az oszlopok részhalmazának megadásához.

a változástáblát tartalmazó fájlcsoportot.

Alapértelmezés szerint a változástábla az adatbázis alapértelmezett fájlcsoportjában található. Az egyes változástáblák elhelyezését szabályozni kívánó adatbázis-tulajdonosok a @filegroup_name paraméterrel adhatnak meg egy adott fájlcsoportot a rögzítési példányhoz társított változástáblához. A névvel ellátott fájlcsoportnak már léteznie kell. Általában ajánlott a változástáblákat a forrástábláktól eltérő fájlcsoportba helyezni. A @filegroup_name paraméter használatát bemutató példáért tekintse meg a Tábla megadása fájlcsoport beállítás sablont.

-- Enable CDC for a table specifying filegroup
USE MyDB
GO

EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'MyTable',
    @role_name     = N'MyRole',
    @filegroup_name = N'MyDB_CT',
    @supports_net_changes = 1
GO

Egy változástáblához való hozzáférés vezérlésére szolgáló szerepkör.

A névvel ellátott szerepkör célja a változásadatokhoz való hozzáférés szabályozása. A megadott szerepkör lehet meglévő rögzített kiszolgálói vagy adatbázis-szerepkör. Ha a megadott szerepkör még nem létezik, a rendszer automatikusan létrehoz egy ilyen nevű adatbázis-szerepkört. A felhasználóknak SELECT engedéllyel kell rendelkezniük a forrástábla összes rögzített oszlopán. Emellett a szerepkör megadásakor a sysadmin vagy db_owner szerepkörrel nem rendelkező felhasználóknak is a megadott szerepkör tagjainak kell lenniük.

Ha nem szeretne gating szerepkört használni, állítsa a @role_name paramétert NULL értékre. Tekintse meg a Tábla engedélyezése Gating Role sablon használata nélkül című témakört, amely bemutatja, hogy egy tábla engedélyezve van-e a betöltési szerepkör nélkül.

-- Enable CDC for a table using a gating role option
USE MyDB
GO
    EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'MyTable',
    @role_name     = NULL,
    @supports_net_changes = 1
GO

Egy függvény, amely lekérdezi a nettó változásokat.

A rögzítési példányok mindig tartalmaznak egy táblaértékelő függvényt (TVF) az összes olyan változástábla-bejegyzés visszaadására, amely egy meghatározott intervallumon belül történt. Ezt a függvényt úgy nevezzük el, hogy a rögzítési példány nevét hozzáfűzzük a "cdc.fn_cdc_get_all_changes_" kifejezéshez. További információ: cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL).

Ha a @supports_net_changes paraméter értéke 1, akkor a rendszer létrehoz egy nettó módosítási függvényt is a rögzítési példányhoz. Ez a függvény csak egy változást ad vissza a hívásban megadott intervallumban módosított egyes különálló sorokhoz. További információ: cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL).

A nettó változási lekérdezések támogatásához a forrástáblának elsődleges kulccsal vagy egyedi indexel kell rendelkeznie a sorok egyedi azonosításához. Ha egyedi indexet használ, az index nevét a @index_name paraméterrel kell megadni. Az elsődleges kulcsban vagy az egyedi indexben definiált oszlopokat fel kell venni a rögzítendő forrásoszlopok listájába.

Tekintse meg a Tábla engedélyezése az összeshöz és a Net Changes-lekérdezésekhez sablont, amely egy rögzítési példány létrehozását szemlélteti mindkét lekérdezési funkcióval.

-- Enable CDC for a table for all and net changes queries
USE MyDB
GO
EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'MyTable',
    @role_name     = N'MyRole',
    @supports_net_changes = 1
GO

Jegyzet

Ha a változásadat-rögzítés engedélyezve van egy meglévő elsődleges kulccsal rendelkező táblában, és a @index_name paraméter nem egy alternatív egyedi index azonosítására szolgál, a változásadat-rögzítési funkció az elsődleges kulcsot használja. Az elsődleges kulcs későbbi módosításai nem engedélyezettek anélkül, hogy először letiltanák a tábla adatrögzítését. Ez attól függetlenül igaz, hogy a módosítási adatrögzítés konfigurálásakor kérték-e a net change lekérdezések támogatását. Ha egy táblán nincs elsődleges kulcs az adatrögzítés engedélyezésekor, az elsődleges kulcs későbbi hozzáadását figyelmen kívül hagyja a módosítási adatrögzítés. Mivel a módosítási adatrögzítés nem használ a tábla engedélyezése után létrehozott elsődleges kulcsot, a kulcs és a kulcsoszlopok korlátozás nélkül eltávolíthatók.

Tábla letiltása

A db_owner rögzített adatbázis-szerepkör tagjai a tárolt eljárás sys.sp_cdc_disable_tablehasználatával eltávolíthatják az egyes forrástáblák rögzítési példányát. Annak megállapításához, hogy egy forrástábla jelenleg engedélyezve van-e a változásadatok rögzítéséhez, vizsgálja meg a sys.tables katalógusnézet is_tracked_by_cdc oszlopát. Ha a letiltás után nincsenek engedélyezve táblák az adatbázis számára, a módosítási adatrögzítési feladatok is törlődnek.

Ha elvet egy módosítási adatrögzítésre képes táblát, a rendszer automatikusan eltávolítja a táblához társított adatrögzítési metaadatokat.

A tábla letiltására példaként tekintse meg a Táblasablonok rögzítési példányának letiltása című témakört.

-- Disable a Capture Instance for a table
USE MyDB
GO
    EXEC sys.sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name   = N'MyTable',
    @capture_instance = N'dbo_MyTable'
GO

Lásd még: