Partager via


<sys.fn_all_changes_capture_instance> (Transact-SQL)

S’applique à :SQL Server

Wrappers pour les fonctions de requête all changes . Les scripts nécessaires à la création de ces fonctions sont générés par la sys.sp_cdc_generate_wrapper_function procédure stockée. Pour plus d’informations sur la procédure stockée utilisée pour créer sys.fn_all_changes_<capture_instance>, consultez sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Arguments

heure-début

Valeur datetime qui représente le point de terminaison faible de la plage d’entrées de table de modifications à inclure dans le jeu de résultats.

Seules les lignes de la cdc.<capture_instance>_CT table de modifications qui ont un temps de validation associé supérieur à start_time sont incluses dans le jeu de résultats.

Si une valeur NULL est fournie pour cet argument, le point de terminaison inférieur de la plage de requêtes correspond au point de terminaison inférieur de la plage valide pour l'instance de capture.

Si la valeur du paramètre @start_time ou @end_time dépasse l’heure du LSN le plus bas ou du LSN le plus élevé, l’exécution des fonctions wrapper générées entraînera l’erreur 313 : Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Cette erreur doit être gérée par le développeur.

heure-fin

Valeur datetime qui représente le point de terminaison élevé de la plage d’entrées de table de modifications à inclure dans le jeu de résultats.

Ce paramètre peut prendre l’une des deux significations possibles en fonction de la valeur choisie pour @closed_high_end_point quand sys.sp_cdc_generate_wrapper_function est appelé pour générer le script de création pour la fonction wrapper :

  • @closed_high_end_point = 1

    Seules les lignes de la cdc.<capture_instance>_CT table de modifications qui ont un temps de validation associé inférieur ou égal à end_time sont incluses dans le jeu de résultats.

  • @closed_high_end_point = 0

    Seules les lignes de la cdc.capture_instance_CT table de modifications qui ont un temps de validation associé strictement inférieur à end_time sont incluses dans le jeu de résultats.

Si une valeur NULL est fournie pour cet argument, le point de terminaison supérieur de la plage de requêtes correspond au point de terminaison supérieur de la plage valide pour l'instance de capture.

Si la valeur du paramètre @start_time ou @end_time dépasse l’heure du LSN le plus bas ou du LSN le plus élevé, l’exécution des fonctions wrapper générées entraînera l’erreur 313 : Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Cette erreur doit être gérée par le développeur.

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

Option qui régit le contenu des colonnes de métadonnées ainsi que les lignes retournées dans le jeu de résultats.

Il peut s'agir de l'une des options suivantes :

all
Retourne toutes les modifications dans la plage spécifiée de numéro séquentiel dans le journal. Pour les modifications résultantes d'une opération de mise à jour, cette option retourne seulement la ligne qui contient les nouvelles valeurs après l'application de la mise à jour.

all update old
Retourne toutes les modifications dans la plage spécifiée de numéro séquentiel dans le journal. Pour les modifications résultantes d'une opération de mise à jour, cette option retourne seulement les deux lignes qui contiennent les valeurs de colonnes avant et après la mise à jour.

Table retournée

Nom de la colonne Type de colonne Description
__CDC_STARTLSN binary(10) Numéro LSN de validation de la transaction associée à la modification. Toutes les modifications validées dans la même transaction partagent le même numéro LSN de validation.
__CDC_SEQVAL binary(10) Valeur de classement utilisée pour classer les modifications de ligne dans une transaction.
<colonnes à partir de @column_list> Varie Les colonnes identifiées dans l’argument column_list à sp_cdc_generate_wrapper_function lorsqu’il est appelé pour générer le script qui crée la fonction wrapper.
__CDC_OPERATION nvarchar(2) Code d'opération qui indique l'opération requise pour appliquer la ligne à l'environnement cible. Elle varie en fonction de la valeur de l’argument row_filter_option fournie dans l’appel :

row_filter_option = 'all'

'D' - opération de suppression

'I' - opération d'insertion

'UN' – opération de mise à jour (nouvelles valeurs)

row_filter_option = 'all update old'

'D' - opération de suppression

'I' - opération d'insertion

'UN' – opération de mise à jour (nouvelles valeurs)

'UO' – opération de mise à jour (anciennes valeurs)
<colonnes à partir de @update_flag_list> bit Un indicateur de bits est nommé en ajoutant _uflag au nom de la colonne. L'indicateur a toujours la valeur NULL lorsque __CDC_OPERATION est 'D', 'I' ou 'UO'. Lorsque __CDC_OPERATION est 'UN', il est défini à 1 si la mise à jour a produit une modification dans la colonne correspondante. Sinon, il prend la valeur 0.

Notes

La fn_all_changes_<capture_instance> fonction sert de wrapper pour la cdc.fn_cdc_get_all_changes_<capture_instance> fonction de requête. La sys.sp_cdc_generate_wrapper procédure stockée est utilisée pour générer le script de création du wrapper.

Les fonctions wrapper ne sont pas créées automatiquement. Vous devez effectuer deux opérations pour créer des fonctions wrapper :

  1. Exécuter la procédure stockée pour générer le script pour créer le wrapper.

  2. Exécuter le script pour créer la fonction wrapper.

Les fonctions wrapper permettent aux utilisateurs d’interroger systématiquement les modifications qui se sont produites dans un intervalle limité par des valeurs datetime plutôt que par des valeurs LSN. Les fonctions wrapper effectuent toutes les conversions requises entre les valeurs datetime fournies et les valeurs LSN nécessaires en interne en tant qu’arguments vers les fonctions de requête. Lorsque les fonctions de wrapper sont utilisées en série pour traiter un flux de données modifiées, elles garantissent qu’aucune donnée n’est perdue ou répétée à condition que la convention suivante soit respectée : la @end_time valeur de l’intervalle associé à un appel est fournie comme @start_time valeur pour l’intervalle associé à l’appel suivant.

L'utilisation du paramètre @closed_high_end_point lors de la création du script vous permet de générer des wrappers destinés à prendre en charge une limite supérieure fermée ou une limite supérieure ouverte sur la fenêtre de requête spécifiée. Autrement dit, vous pouvez décider si les entrées qui ont une heure de validation égale à la limite supérieure de l'intervalle d'extraction doivent être incluses dans l'intervalle. Par défaut, la limite supérieure est incluse.

Le jeu de résultats retourné par la fonction wrapper all changes retourne les colonnes __$start_lsn et __$seqval de la table de modifications en tant que colonnes __CDC_STARTLSN et __CDC_SEQVAL, respectivement. Il les suit avec uniquement les colonnes suivies qui sont apparues dans le paramètre @column_list lorsque le wrapper a été généré. Si @column_list a la valeur NULL, toutes les colonnes sources suivies sont retournées. Les colonnes sources sont suivies d'une colonne d'opération, __CDC_OPERATION, qui est une colonne à un ou deux caractères qui identifie l'opération.

Les indicateurs de bits sont ensuite rajoutés au jeu de résultats pour chaque colonne identifiée dans le paramètre @update_flag_list. Pour le wrapper all changes , les indicateurs de bits seront toujours NULL si __CDC_OPERATION est 'D', 'I' ou 'UO'. Si __CDC_OPERATION est 'UN', l'indicateur a la valeur 1 ou 0, selon que l'opération de mise à jour a entraîné ou non une modification de la colonne.

Le modèle de configuration de capture de données modifiées « Instanciation du wrapper CDC pour le schéma » montre comment utiliser la sp_cdc_generate_wrapper_function procédure stockée pour obtenir des scripts CREATE pour toutes les fonctions de wrapper pour les fonctions de requête définies d’un schéma. Le modèle crée ensuite ces scripts. Pour plus d’informations sur les modèles, consultez Template Explorer.

Les fonctions sys.fn_all_changes_<capture_instance> wrapper et sys.fn_net_changes_<capture_instance> dépendent des fonctions cdc.fn_cdc_get_all_changes_<capture_instance> système et cdc.fn_cdc_get_net_changes_<capture_instance>. L’erreur 313 est attendue si la plage LSN fournie n’est pas appropriée lors de l’appel cdc.fn_cdc_get_all_changes_<capture_instance> ou cdc.fn_cdc_get_net_changes_<capture_instance>. Si le lsn_value paramètre est au-delà de la durée du LSN le plus bas ou du LSN le plus élevé, l’exécution de ces fonctions retourne dans l’erreur 313 : Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Cette erreur doit être gérée par le développeur. L’exemple T-SQL pour une solution de contournement est disponible sur ReplTalk sur GitHub.

Voir aussi