sys.fn_cdc_map_time_to_lsn (Transact-SQL)sys.fn_cdc_map_time_to_lsn (Transact-SQL)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Retourne la valeur de numéro séquentiel de séquence de journal dans le start_lsn colonne dans le cdc.lsn_time_mapping (table système) pour l’heure spécifiée.Returns the log sequence number (LSN) value from the start_lsn column in the cdc.lsn_time_mapping system table for the specified time. Vous pouvez utiliser cette fonction pour mapper systématiquement des plages de date/heure dans la plage de 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 < instance_capture > pour renvoyer les modifications de données dans cette plage.You can use this function to systematically map datetime ranges into the LSN-based range needed by the change data capture enumeration functions cdc.fn_cdc_get_all_changes_<capture_instance> and cdc.fn_cdc_get_net_changes_<capture_instance> to return data changes within that range.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
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  
}  

ArgumentsArguments

« < relational_operator > ' {plus grande moins que | plus moins grand qu’ou égal | plus petit supérieur à | plus petit supérieur ou égal}'<relational_operator>' { largest less than | largest less than or equal | smallest greater than | smallest greater than or equal }
Est utilisé pour identifier une valeur LSN distincte dans le cdc.lsn_time_mapping table avec associé à un tran_end_time qui satisfait la relation par rapport à la tracking_time valeur.Is used to identify a distinct LSN value in within the cdc.lsn_time_mapping table with an associated tran_end_time that satisfies the relation when compared to the tracking_time value.

relational_operator est nvarchar (30) .relational_operator is nvarchar(30).

tracking_timetracking_time
Valeur datetime à mettre en correspondance.Is the datetime value to match against. tracking_time est datetime.tracking_time is datetime.

Type de retourReturn Type

binary(10)binary(10)

NotesRemarks

Pour comprendre comment la sys.fn_cdc_map_time_lsn peut être utilisé pour mapper les plages datetime aux plages LSN, considérez le scénario suivant.To understand how the sys.fn_cdc_map_time_lsn can be used to map datetime ranges to LSN ranges, consider the following scenario. Supposez qu'un utilisateur souhaite extraire des données de modifications de façon quotidienne.Assume that a consumer wants to extract change data on a daily basis. Autrement dit, il ne souhaite extraire que les modifications pour un jour donné jusqu'à minuit compris.That is, the consumer wants only changes for a given day up to and including midnight. La limite inférieure de la plage temporelle se situerait à minuit, sans l'inclure, le jour précédent.The lower bound of the time range would be up to but not including midnight of the previous day. La limite supérieure se situerait à minuit (compris) le jour donné.The upper bound would be up to and including midnight of the given day. L’exemple suivant montre comment la fonction sys.fn_cdc_map_time_to_lsn peut être utilisé pour mapper systématiquement cette plage temporelle dans la plage basée sur LSN nécessaire par les fonctions d’énumération de capture de données modifiées pour retourner toutes les modifications dans cette plage.The following example shows how the function sys.fn_cdc_map_time_to_lsn can be used to systematically map this time-based range into the LSN-based range needed by the change data capture enumeration functions to return all changes within that range.

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 ');SELECT * FROM cdc.fn_cdc_get_net_changes_HR_Department(@begin_lsn, @end_lsn, 'all ');

L'opérateur relationnel 'smallest greater than' est utilisé pour limiter les modifications à celles qui ont été effectuées après minuit le jour précédent.The relational operator 'smallest greater than' is used to restrict changes to those that occurred after midnight on the previous day. Si plusieurs entrées avec différentes valeurs LSN partage le tran_end_time valeur identifiée comme limite inférieure dans le cdc.lsn_time_mapping table, la fonction retournera la valeur LSN la vérification toutes les entrées sont incluses.If multiple entries with different LSN values share the tran_end_time value identified as the lower bound in the cdc.lsn_time_mapping table, the function will return the smallest LSN ensuring that all entries are included. Pour la limite supérieure, l’opérateur relationnel 'largest less than or equal to' permet de s’assurer que la plage comprend toutes les entrées pour le jour, y compris ceux qui ont minuit comme leurs tran_end_time valeur.For the upper bound, the relational operator 'largest less than or equal to' is used to ensure that the range includes all entries for the day including those than have midnight as their tran_end_time value. Si plusieurs entrées avec différentes valeurs LSN partage le tran_end_time valeur identifiée comme limite supérieure, la fonction retournera le LSN la plus élevée qui garantit que toutes les entrées sont incluses.If multiple entries with different LSN values share the tran_end_time value identified as the upper bound, the function will return the largest LSN ensuring that all entries are included.

AutorisationsPermissions

Nécessite l'appartenance au rôle public .Requires membership in the public role.

ExemplesExamples

L’exemple suivant utilise le sys.fn_cdc_map_time_lsn fonction permettant de déterminer s’il existe des lignes dans le cdc.lsn_time_mapping table avec un tran_end_time valeur est supérieure ou égale à minuit.The following example uses the sys.fn_cdc_map_time_lsn function to determine whether there are any rows in the cdc.lsn_time_mapping table with a tran_end_time value that is greater than or equal to midnight. 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.This query can be used to determine, for example, whether the capture process has already processed the changes committed through midnight of the previous day, so that the extraction of change data for that day can proceed.

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 aussiSee Also

cdc.lsn_time_mapping (Transact-SQL) cdc.lsn_time_mapping (Transact-SQL)
sys.fn_cdc_map_lsn_to_time (Transact-SQL) sys.fn_cdc_map_lsn_to_time (Transact-SQL)
cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL) cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)
cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)