Skip to main content

Premier regard sur l'image, comprendre la prochaine image, sachez ce qui se passe.

Pour CDC relativement simple, l'environnement n'est pas trop compliqué à être configuré. Mais aussi besoin de prendre du temps pour vérifier.

1.1.1 Tableau ci-dessous
Toutes les tables ci-dessous sont liées à la prise de vue des données modifiées est créée

Dans le schéma de capture de capture (CDC) de la base de données CDC

Format de nom pour les systèmes et fonctions de CDC.:

1.1.1.1 Changer Express: & lt; Schema name_table Nom & GT; de la table source

1.1.1.2 Les tableaux ci-dessous sont utilisés pour capturer les activités de DML:

& lt; Schema name_table Nom & GT; _Ct ( Nom du schéma pour


Structure sur la modification de la capture de données:

Concept LSN: Nombre de série de journaux

_ $ START_LSN:


_ $ end_lsn:
_ SEQVAL:

_ $ Opération:

1- Supprimer;
2 -
3- Mise à jour (avant);
4 - Mise à jour (après)
_ update_mask: L'autre colonne est identique à celle du tableau
1.1.1.3 Fonctions de fonctions lire des données capturées:

1.1.1.3.1 Pour lire toutes les données: Ajouter fn_cdc_get_all_changes_ à la version

par exemple: fn_cdc_get_all_changes_ & lt; Schema name_t_table Nom & GT;
1.1.1.3.2 Pour lire les modifications réseau: Fn_CDC_GET_NET_CHANGES_ à la version
E.G. Fn_cdc_get_net_changes_ & lt; Schema name_table Nom & GT;

Il existe des questions ici, comment soutenir le changement net?

Index principal ou unique

1.1.2 Exemple de capture: Ce doit être le conteneur principal, il est


Incluant les tableaux de table et les fonctions ci-dessous

1.1.3 Données CDC en lecture conformes aux fonctions système


1.1.4 Deux serveur de travail SQL Agent, un pour les données à remplir des données de Le journal
change le tableau; Un pour le processus de nettoyage. Leur créativité et leur démarrage
peuvent être configurés.
SYS.SP_CDC_ADD_JOB & AMP; SYS.SP_CDC_Drop_JOB
SYS.SP_CDC_CHANGE_JOB & AMP; SYS.SP_CDC_HELP_JOBS
SYS.SP_CDC_START_JOB & AMP; SYS.SSP_CDC_STOP_JOB
1.2 Configuration
1.2.1 Activer CDC pour la base de données: SYS.SP_CDC_ENABLE_DB

Demander un rôle de serveur Sysadmin à allumer CDC;

Sélectionnez la base de données pour activer CDC, appliquez le processus archivé:

Contrainte: 对于 个 数据库 数据库 能 能 内存 内存
Use lenistest3GoExec Sys.sp_cdc_enable_db
MSG 41385, Niveau 16, Statut 1, Process SP_CDC_ENABLE_DB, ligne 33

MuscleBase de données pour les deux modifications Capture Capture (CDC) et
Stockez Memory_OPTItimized_Data.
1.2.2 Soulevez les tables de CDC:

SYS.SP_CDC_ENABLE_TABLE

1.2.2.1 Les émissions de prise de vue seront créées pour la table CDC
1.2.2.2 Pour obtenir le carton d'information de métadonnées CDC, utilisez la fonction Système:
CDC.Captured_columns De plus, le système est stocké la procédure peut être utilisé pour des informations:
SYS.SP_CDC_HELP_CHANGE_DATA_CAPTURE
1.2.2.3 Pour activer la table CDC avec le support NET Change: Pour d'autres paramètres ] reportez-vous à la syntaxe de SYS.SP_CDC_ENABLE_TABLE. Pour les réseaux

Modifier, il doit y avoir une seule clé ou une index sur la table.

Utilisez Lenistest3

Go

EXEC SYS.SSP_CDC_ENABLE_TABLE

@SOURCE_SCHEMA

= N "DBO",


@source_name
= N "Région",

1.2.3

Synchronisation des données

] 1.2.3.0
Comment préparer des données modifiées

1.2.3.0.1

CDC.FN_CDC_GET_ALL_CHANGES_CAPTURE_INStance (de_lsn, to_lsn,

" & lt; rangée_fileter_option & gt; ")

Ici

& lt; ROW_FILTER_OPTITRIES & GT; il existe deux valeurs:



Une ligne de chaque modification inclut un fonctionnement mis à jour

Mise à jour: deux lignes à mettre à jour L'opération, une fois avant de changer, un

après le changement.

1.2.3.1

Méthode

Utilisé pour synchroniser des données

1.2.3.2


1.3 Une fois un seul exemple à renvoyer


CDC


DBO.GEGion Table (Région Int, Région de Varchar. 10))

Go

Insérer

dans les valeurs DBO.GReGion (zone, région) (1, 'Chine')

Go

EXEC

SYS.SP_CDC_ENABLE_DB

Go


Nom, is_cdc_enables de sys.database dans quel nom = 'leniserest4'
Alter

DBO.REGION ALTER TABLE TABLEUR INT NOL NULL

ALTER

DBO.GEGION
EXECT
SYS.SP_CDC_ENABLEE_TABLE @SOURCE_SCHEMA = N'DBO ', @source_Name =
N'region', @supports_net_changes = 1, @Role_Name = null

Object_name (Object_id) Comme Change_Table, Nom de l'objet

est Source_Table, Capture_Instance à partir de CDC.Change_Tables


* de CDC.DBO_REGION_CT


.

* de DBO.REGION

1.3.2

recevoir leChangement de données

Sélectionnez

* à partir de CDC.FN_CDC_GET_ALL_CHANGES_DBO_REGION (

SYS.FN_CDC_GET_MIN_LSN ("DBO_REGION"), SYS.FN_CDC_GET_MAX_LSN (),


* à partir de CDC.FN_CDC_GET_NET_CHANGES_DBO_REGION (
SYS.FN_CDC_GET_LIN_LSN ('dbo_region'), SYS.FN_CDC_GET_MAX_LSN (),
N'all '

1.3.3

Manipulation de l'application de la modification de la prise de données

-


1. Panneau de commande: connectez toutes les transactions de conversion de données modifiées

-

2. Applications de données de transfert

-

3. Vérifiez le test

-

4. Oscape les données modifiées


-

1. Le panneau de commande: Connexion de chaque traduction de conversion de données a modifié la modification


1.1 Board de configuration: Pour enregistrer les tables tournées sur CDC
-

1.2 Contrôle du conseil d'article: Données de transfert de journal de transaction

Créer

DBO.CDC_TABLE TABLE TABLE (CDCID INT sans NULL, CDCTTABLEVARCHAR (50),


CDCPROCESSP Varcharchar (200), BitCenables Bit)
Go


Tableau DBO.CDC_DENDEND (Bigint Trading pas NULL, CDCID INT NO
NULL,
DateTime, DateTime CDCenddT, bit binaire, CDCMinlsn binaire (10),
Binary CDCMAXLSN (10))
Go

Insertion


Dans DBO.CDC_TABLES (CDCID, CDCCTABLE, CDC ProcesssP, CDCenables)
Valeur (1, 'DBO.REGION', 'DBO.CDC ProcurentReGion', 1)
-
2. Application de transfert
Créer le processus

(@ CDCMinlsn

Binary (10), @CCCMAXLSN binaire (10 )))


Démarrage

Démarrage

Essayez

Déclaration


@OP INT = 0, @regionid INT = 0, @regionName Varcharchar (200) = ''

Codor CDC_CUR pour

Choisir

__ $ opération est OPR, région, région

à partir de


CDC.FN_CDC_GET_NET_CHANGES_DBO_REGION (@CCMINLSN, @CCCMAXLSN,
'' TOUT ')

Fetch


Suivant de CDC_Cur dans @op, @regionid, @regionName
Tandis que
@@ fetch_status = 0
.
DBO.REGION_CDC dans quelle zone = @regionId

@OP = 2

Insertion

dans DBO. Valeurs de région_cdc (zone, zone) (@regionid,


@regionname)
Si
@OP = 4
Mise à jour

DBO.REGION_CDC Définissez la zone = @ régionName

dans laquelle

Zone = @regionId

Fetch


Suivant de CDC_CUR dans @OP, @ Régionid, @regionName
Terminer
Fermer
CDC_CUR
Résoudre
CDC_CUR
Finition
Essayez
Démarrer

RAISError

("Erreur de zone de processus CDC ', 16.1)
Terminer
Obtenir
Terminer
Go

Processus DBO.CDC_TRANSFER

]
Démarrer

My_Cur Pointeur Pour sélectionner CDCID, CDCCTable, CDC ProcesssSP de

DBO.CDC_TABLES dans laquelle CDCÉNABLE = 1

@CDCID INT, @CDCTactacle Varchar (50), @ CDC ProcesssSP Nvarchar (200)


Déclaration
@TransactionId Bigint, @cdcstartdt DateTime, @cdcendt DateTime,

@CCMINLSN BINARY @ (10), @CCCMAXLSN Binary (10)

Déclaration

@CCMINLSN_P NVARCHAR (200), @CCCMAXLSN_P NVARCHAR (200)

@cdccompleté bit = 0


@sqlstat nvarchar (max );

Déclaration

@capture_instance Varchar (100);

Choisissez

@CDCMAXLSN = SYS.FN_CDC_GET_MAX_LSN ()


@CCCMAXLSN_P = Convertir (NVARCHAR (80), @ CDCMAXLSN, 1) ]

Ouvrir
Suivant de My_Cur dans @CDCID, @CDCTable, @ CDCCESSP
tandis que

@@ fetch_status = 0


Choisissez

@TransactionID = ISNULL (max (transaction) + 1.1) de dbo.cdc_driven

]

@CDCSTARTDD = getutcdate ();


@capture_instance = capture_instance de CDC.Instance

Dans laquelle

Source_Object_id = Object_id (@cject (@cDCtable)

@CCCMINLSN = SYS.FN_CDC_GET_MIN_LSN (@capture_instance)

@CCCMINLSN_P = Conversion (NVARCHAR (80), @CCCMINLSN, 1)

SET

@sqlstat = N 'Exec' + @CDC ProcesssSP + N '@CDCMINLSN = @CDCMINLSN,
@CCCMAXLSN = @CCCMAXLSN; '
- Imprimer
EXEC
SP_EXECUTSQL @stMT = @sqlstat , @Params = n '@dcminlsn binaire (10),

Binary (10)' (10) '


= @CCCMINLSN, @CCCMAXLSN = @CDCMAXLSN


@cdcCompletd = 1


@ddderdt = getutcdate ();
Insérer
dans dbo.cdc_driven (transactions, CDCID, CDCSTARTDT,
CDCCompletted, CDCMinlsn, CDCMAXLSN)
Valeur (@TransactionAb,
@CDCID, @cdcstartdt, @ CDCCondt, @ cdcminlsn, @ cdcminlsn, @ cdcmaxlsn)
Fetch

Suivant de My_Cur dans @CDCID, @CDCTable, @ CDC ProcesssSp

Terminer

Fermer


Terminer
Essayez

Démarrage

Obtenir

Déclaration

@errormsgnvarchar (4000)= 'Erreur de transfert:' + error_message ()

;

Si


Cursor_status ('Global', 'My_Cur') & GT; -1
Démarrer
Fermer

My_Cur

Règlement
My_CUR

RAISError

(@ errorormsg, 16, 1)

Terminer

]

Obtenir

Terminer


EXEC


-
3 . Vérifiez le test
Choisissez
Count (*) Missedrows
De
(
(Select

, zone

de


Sauf
Choisir
Zone, zone

de DBO.REGION_CDC) Union [Choisissez Zone, zone DBO.REGION_CDC Sauf Choisir à partir de dbo.region) ) TMP - 4. oscapez les données transformées Processus Démarrer Démarrage Essayez My_Cur Pointeur Pour sélectionner CDCID, Cadctable de DBO.CDC_TABLES dans laquelle ] CDCenables = 1 @CDCID INT, @CDCTacle Varchar (200) @CDCInstance Varchar (200) ] Déclaration @CDCCommettable Varcharchar (200) @maxlsn binaire (10) Ouvrir Fetch Suivant de My_Cur en @ CDCID @ CDACTABLE @@ fetch_status = 0 @maxlsn = max (CDCMAXLSN) de dbo.cdc_driven où CDCID = @CDCID et CDCCompletd = 1 Si ISNULL (@ maxlsn, 0) & Lt; 0 Démarrer Choisissez @CDCCHANGETIBLABLETABLE = 'CDC.' + Object_Name (objet_id) à partir de CDC.change_tables dans lesquels Source_Object_id = Object_Id (@cdchable) @sqlstate nvarchar (max) Réglez @sqlstate = N 'Supprimer' + @CDCCommettable + 'dans lequel __ $ start_lsn & lt; = @maxlsn ' EXEC SP_EXECUTSQL @state = @sqlstate, @params = n' @ maxlsn binaire (10), @Maxlsn = @ maxlsn Terminer Fetch Ensuite de My_Cur dans @CDCID, @CDCACTABLE Terminer Cursor_status ('Global', 'My_Cur') & GT; -1 Fermer My_Cur ] Résolvez My_Cur Terminer Finition Démarrer DÉCLARATION @Erormsg Nvarchar (4000) = 'Erreur lors de la commutation:' + error_message () ; Si Cursor_status ('global', 'my_cur') & gt; -1 Démarrer Fermer My_CUR ] Solve My_Cur Finition RaisError (@ errorormsg, 16, 1) Terminer les extrémités de la capture

Sujets

Catégories