sys.fn_cdc_map_time_to_lsn (Transact-SQL)
S’applique à :SQL Server
Retourne la valeur du numéro séquentiel du journal (LSN) de la start_lsn
colonne dans la table système cdc.lsn_time_mapping pour l’heure spécifiée. Vous pouvez utiliser cette fonction pour mapper systématiquement des plages dateheure dans la plage basée sur LSN requise par les fonctions d’énumération de capture de données modifiées cdc.fn_cdc_get_all_changes_<capture_instance> et cdc.fn_cdc_get_net_changes_<capture_instance> pour retourner les modifications de données dans cette plage.
Conventions de la syntaxe Transact-SQL
Syntaxe
sys.fn_cdc_map_time_to_lsn ( '<relational_operator>', tracking_time )
<relational_operator> ::=
{ largest less than
| largest less than or equal
| smallest greater than
| smallest greater than or equal
}
Arguments
'<relational_operator>' { plus grand inférieur à | plus grand inférieur ou égal | plus petit supérieur à | plus petit supérieur ou égal }
Permet d’identifier une valeur LSN distincte dans la cdc.lsn_time_mapping
table avec un associé tran_end_time
qui satisfait la relation par rapport à la valeur tracking_time .
relational_operator est nvarchar(30).
tracking_time
Valeur datetime à mettre en correspondance. tracking_time a la valeur datetime.
Type de retour
binary(10)
Notes
Pour comprendre comment la sys.fn_cdc_map_time_to_lsn
fonction peut être utilisée pour mapper des plages de date et heure à des plages LSN, envisagez le scénario suivant.
Supposez qu'un utilisateur souhaite extraire des données de modifications de façon quotidienne. Autrement dit, il ne souhaite extraire que les modifications pour un jour donné jusqu'à minuit compris. La limite inférieure de la plage temporelle se situerait à minuit, sans l'inclure, le jour précédent. La limite supérieure se situerait à minuit (compris) le jour donné. L’exemple suivant montre comment la fonction sys.fn_cdc_map_time_to_lsn
peut être utilisée pour mapper systématiquement cette plage temporelle dans la plage LSN requise par les fonctions d’énumération de capture de données modifiées pour retourner toutes les modifications dans cette plage.
DECLARE @begin_time DATETIME,
@end_time DATETIME,
@begin_lsn BINARY (10),
@end_lsn BINARY (10);
SET @begin_time = '2007-01-01 12:00:00.000';
SET @end_time = '2007-01-02 12:00:00.000';
SELECT @begin_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than', @begin_time);
SELECT @end_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);
SELECT *
FROM cdc.fn_cdc_get_net_changes_HR_Department(@begin_lsn, @end_lsn, 'all` `');
L’opérateur smallest greater than
relationnel est utilisé pour limiter les modifications apportées à celles qui se sont produites après minuit le jour précédent. Si plusieurs entrées avec différentes valeurs LSN partagent la tran_end_time
valeur identifiée comme la limite inférieure dans la table cdc.lsn_time_mapping , la fonction retourne le plus petit LSN garantissant que toutes les entrées sont incluses. Pour la limite supérieure, l’opérateur largest less than or equal to
relationnel est utilisé pour s’assurer que la plage inclut toutes les entrées du jour, y compris celles qui ont minuit comme tran_end_time
valeur. Si plusieurs entrées avec des valeurs LSN différentes partagent la tran_end_time
valeur identifiée en tant que limite supérieure, la fonction retourne le LSN le plus grand s’assurant que toutes les entrées sont incluses.
Autorisations
Nécessite l'appartenance au rôle public .
Exemples
L’exemple suivant utilise la sys.fn_cdc_map_time_to_lsn
fonction pour déterminer s’il existe des lignes dans la table cdc.lsn_time_mapping dont tran_end_time
la valeur est supérieure ou égale à minuit. Cette requête peut être utilisée pour déterminer, par exemple, si le processus de capture a déjà traité les modifications validées jusqu'à minuit le jour précédent, afin que l'extraction des données de modifications pour ce jour puisse continuer.
DECLARE @extraction_time DATETIME,
@lsn BINARY (10);
SET @extraction_time = '2007-01-01 12:00:00.000';
SELECT @lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @extraction_time);
IF @lsn IS NOT NULL
BEGIN
<some action>
END
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour