sys.fn_cdc_get_min_lsn (Transact-SQL)

Renvoie la valeur de colonne start_lsn pour l'instance de capture spécifiée à partir de la table système cdc.change_tables. Cette valeur représente le point de terminaison inférieur de l'intervalle de validité pour l'instance de capture.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )

Arguments

  • 'capture_instance_name'
    Nom de l'instance de capture. capture_instance_name est de type sysname.

Types de retours

binary(10)

Notes

Retourne 0x00000000000000000000 lorsque l'instance de capture n'existe pas ou que l'appelant n'est pas autorisé à accéder aux données de modification associées à l'instance de capture.

Cette fonction est utilisée en général pour identifier le point de terminaison inférieur de la chronologie de capture des données modifiées associé à une instance de capture. Vous pouvez également utiliser cette fonction pour valider que les points de terminaison d'une plage de requêtes se situent dans la chronologie de l'instance de capture avant de demander les données de modification. Il est important d'effectuer de tels contrôles, car le point de terminaison inférieur d'une instance de capture change lorsque le nettoyage est effectué sur les tables de modifications. Si l'intervalle entre les demandes de données de modification est significatif, même un point de terminaison inférieur qui a pour valeur le point de terminaison supérieur de la demande de données de modification précédente peut se trouver à l'extérieur de la chronologie actuelle. Pour plus d'informations sur la chronologie de capture des données modifiées, consultez Configuration de la capture des données modifiées.

Autorisations

Requiert l'appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner. Pour tous les autres utilisateurs, requiert l'autorisation SELECT sur toutes les colonnes capturées dans la table source et, si un rôle de régulation pour l'instance de capture a été défini, l'appartenance à ce rôle de base de données.

Exemples

A. Retour de la valeur LSN minimale pour une instance de capture spécifiée

L'exemple suivant retourne la valeur LSN minimale pour l'instance de capture HumanResources_Employee dans la base de données AdventureWorks.

USE AdventureWorks;
GO
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;

B. Vérification du point de terminaison inférieur d'une plage de requêtes

L'exemple suivant utilise la valeur LSN minimale retournée par sys.fn_cdc_get_min_lsn pour vérifier que le point de terminaison inférieur proposé pour une requête de données de modification est valide pour la chronologie actuelle pour l'instance de capture HumanResources_Employee. Cet exemple suppose que la valeur LSN du point de terminaison supérieur précédent pour l'instance de capture a été enregistrée et est disponible pour définir la variable @save\_to\_lsn. Pour les besoins de cet exemple, @save\_to\_lsn a pour valeur 0x000000000000000000 pour forcer l'exécution de la section de gestion des erreurs.

USE AdventureWorks;
GO
DECLARE @min_lsn binary(10), @from_lsn binary(10),@save_to_lsn binary(10), @to_lsn binary(10);
-- Sets @save_to_lsn to the previous high endpoint saved from the last change data request.
SET @save_to_lsn = 0x000000000000000000;
-- Sets the upper endpoint for the query range to the current maximum LSN.
SET @to_lsn = sys.fn_cdc_get_max_lsn();
-- Sets the @min_lsn parameter to the current minimum LSN for the capture instance.
SET @min_lsn = sys.fn_cdc_get_min_lsn ('HumanResources_Employee');
-- Sets the low endpoint for the query range to the LSN that follows the previous high endpoint.
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);
-- Tests to verify the low endpoint is valid for the current capture instance.
IF (@from_lsn < @min_lsn)
    BEGIN
        RAISERROR('Low endpoint of the request interval is invalid.', 16, -1);
    END
ELSE
-- Return the changes occurring within the query range.
    SELECT * FROM cdc.fn_cdc_get_all_changes_HumanResources_Employee(@from_lsn, @to_lsn, 'all');
GO