sys.fn_net_changes_<capture_instance> (Transact-SQL)
S'applique à : SQL Server
Wrappers pour les fonctions de requête des modifications nettes. Les scripts requis pour créer 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éersys.fn_net_changes_<capture_instance>
, consultez sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Conventions de la syntaxe Transact-SQL
Syntaxe
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
heure-début
Valeur datetime qui représente le point de terminaison faible de la plage d’entrées de table de modification à inclure dans le jeu de résultats.
Seules les lignes de la cdc.<capture_instance>_CT
table de modifications qui ont une durée de validation associée strictement supérieure à 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 modification à inclure dans le jeu de résultats.
Ce paramètre peut prendre l’une des deux significations, en fonction de la valeur choisie pour @closed_high_end_point le moment sys.sp_cdc_generate_wrapper_function
où il est appelé pour générer le script pour créer la fonction wrapper :
@closed_high_end_point = 1
Seules les lignes de la
cdc.<capture_instance>_CT
table de modification qui ont une valeur dans __$start_lsn et une durée de validation correspondante inférieure ou égale à start_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 une valeur dans __$start_lsn et une durée de validation correspondante strictement inférieure à start_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 with mask | all with merge }
Option qui régit le contenu des colonnes de métadonnées aussi bien que les lignes retournées dans le jeu de résultats. Il peut s'agir de l'une des options suivantes :
all
Retourne le contenu final d'une ligne modifiée dans les colonnes de contenu ainsi que l'opération requise pour appliquer la ligne dans la colonne de métadonnées __CDC_OPERATION.
all with mask
Retourne le contenu final de toutes les lignes modifiées dans les colonnes de contenu ainsi que l'opération nécessaire pour appliquer chaque ligne dans la colonne de métadonnées __CDC_OPERATION. Si une liste d'indicateurs de mise à jour a été spécifiée quand vous avez généré le script pour créer la fonction wrapper, cette option est requise pour remplir le masque de mise à jour.
all with merge
Retourne le contenu final de toutes les lignes modifiées dans les colonnes de contenu.
La colonne __CDC_OPERATION aura l'une des deux valeurs suivantes :
D, si la ligne doit être supprimée.
M si la ligne doit être insérée ou mise à jour.
La logique permettant de déterminer si une insertion ou une mise à jour est nécessaire pour appliquer une modification à la cible ajoute une dose de complexité à la requête. Utilisez cette option pour améliorer les performances lorsqu'il n'est pas nécessaire d'effectuer la distinction entre les opérations d'insertion et de mise à jour. Cette approche fonctionne le mieux dans les environnements cibles où une opération de fusion est disponible directement.
Table retournée
Nom de la colonne | Type de colonne | Description |
---|---|---|
<colonnes à partir de @column_list> | varie | Colonnes identifiées dans l’argument column_list au sp_cdc_generate_wrapper_function moment où elle est appelée pour générer le script pour créer le wrapper. Si column_list a la valeur NULL, toutes les colonnes sources suivies apparaissent dans le jeu de résultats. |
__CDC_OPERATION | nvarchar(2) | Code d'opération qui indique quelle opération est requise pour appliquer la ligne à l'environnement cible. L’opération varie en fonction de la valeur de l’argument row_filter_option fourni dans l’appel suivant : row_filter_option = 'all' , 'all with mask' 'D' - opération de suppression 'I' - opération d'insertion 'UN' - opération de mise à jour row_filter_option = 'all with merge' 'D' - opération de suppression 'M' – opération d'insertion ou de mise à jour |
<colonnes à partir de @update_flag_list> | bit | Indicateur de bit nommé en ajoutant _uflag au nom de colonne. L’indicateur prend une valeur non NULL uniquement lorsque row_filter_option = 'all with mask' et __CDC_OPERATION = 'UN'. Il est défini à 1 si la colonne correspondante a été modifiée dans la fenêtre de requête. Sinon, il prend la valeur 0. |
Notes
La fn_net_changes_<capture_instance>
fonction sert de wrapper pour la cdc.fn_cdc_get_net_changes_<capture_instance>
fonction de requête. La sys.sp_cdc_generate_wrapper
procédure stockée est utilisée pour créer le script pour le wrapper.
Les fonctions wrapper ne sont pas créées automatiquement. Vous devez effectuer deux opérations pour créer des fonctions wrapper :
Exécuter la procédure stockée pour générer le script pour créer le wrapper.
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 les valeurs datetime au lieu 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 aux fonctions de requête. Lorsque les fonctions 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 suivie : 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 de modifications nettes retourne uniquement les colonnes suivies qui se trouvaient dans le @column_list moment où 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 de modifications nettes, les indicateurs de bits sont toujours NULL si l’appel @row_filter_option à la fonction wrapper est « all » ou « all with merge ». Si la @row_filter_option valeur est « all with mask » et __CDC_OPERATION est « D » ou « I », la valeur de l’indicateur est également NULL. Si __CDC_OPERATION est « UN », l’indicateur est défini sur 1 ou 0, selon que l’opération de mise à jour nette a provoqué une modification de la colonne.
Le modèle de configuration de capture de données modifiées « Instancier les fichiers TVFs de capture de données modifiées 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 l’Explorateur de modèles.
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 dépasse le temps 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.