Share via


sys.fn_cdc_increment_lsn (Transact-SQL)

S’applique à :SQL Server

Retourne le numéro séquentiel dans le journal suivant dans la séquence basée sur le numéro séquentiel dans le journal spécifié.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
sys.fn_cdc_increment_lsn ( lsn_value )  

Arguments

lsn_value

Valeur LSN. lsn_value est binary(10).

Type de retour

binary(10)

Remarques

La valeur LSN retournée par la fonction est toujours supérieure à la valeur spécifiée, et aucune valeur LSN n'existe entre les deux valeurs.

Pour interroger systématiquement un flux de données de modification dans le temps, vous pouvez répéter périodiquement l'appel de fonction de requête, en spécifiant chaque fois un nouvel intervalle de requête pour délimiter les modifications retournées dans la requête. Pour aider à s'assurer de ne perdre aucune donnée, la limite supérieure de la requête précédente est souvent utilisée pour générer la limite inférieure de la requête suivante. Étant donné que l'intervalle de requête est un intervalle fermé, la nouvelle limite inférieure doit être plus grande que la limite supérieure précédente, mais assez petite pour garantir qu'aucune modification ne comporte de valeur LSN qui se trouve entre cette valeur et l'ancienne limite supérieure. La fonction sys.fn_cdc_increment_lsn est utilisée pour obtenir cette valeur.

Autorisations

Nécessite l’appartenance au rôle de base de données publique .

Exemples

L'exemple suivant utilise sys.fn_cdc_increment_lsn pour générer une nouvelle valeur de limite inférieure pour une requête de capture des données modifiées basée sur la limite supérieure enregistrée dans la variable @save_to_lsn à partir d'une requête précédente.

USE AdventureWorks2022;  
GO  
DECLARE @from_lsn binary(10), @to_lsn binary(10), @save_to_lsn binary(10);  
SET @save_to_lsn = <previous_upper_bound_value>;  
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);  
SET @to_lsn = sys.fn_cdc_get_max_lsn();  
SELECT * from cdc.fn_cdc_get_all_changes_HumanResources_Employee( @from_lsn, @to_lsn, 'all' );  
GO  

Notes

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