Udostępnij za pośrednictwem


sys.fn_cdc_map_time_to_lsn (języka Transact-SQL)

Zwraca wartość numer sekwencyjny dziennika (LSN) z start_lsn kolumna w cdc.lsn_time_mapping tabela systemowa dla określonego czas.Za pomocą tej funkcja systematycznie mapować datetime zakresów do LSN-opartych na zakres potrzebne dane zmiany przechwytywania wyliczania funkcji cdc.fn_cdc_get_all_changes_<capture_instance> i cdc.fn_cdc_get_net_changes_<capture_instance> zwrócić zmiany danych w obrębie tego zakres.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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
}

Argumenty

  • "<relational_operator>" {największą mniej niż | największą mniejsze niż lub równe | najmniejszą liczbę większą niż | równe lub większe niż najmniejsza}
    Służy do identyfikowania różnych wartości LSN w w cdc.lsn_time_mapping tabela ze skojarzonego tran_end_time spełniającego relacji w porównaniu z tracking_time wartości.

    relational_operatoris nvarchar(30).

  • tracking_time
    Jest wartością typu Data/Godzina odpowiedniki.tracking_timeis datetime.

Zwracany typ

binary(10)

Uwagi

Aby zrozumieć, jak sys.fn_cdc_map_time_lsn służą do mapowania zakresów datetime LSN zakresy, należy rozważyć następujący scenariusz.Załóżmy, że konsument chce, aby wyodrębnić Zmień dane codziennie.Oznacza to, że konsument chce tylko zmiany dla danego dnia do i włącznie z północy.Dolna granicazakres czasbyłoby do, ale nie obejmuje północ poprzedniego dnia. Górna granica byłaby, łącznie z północy danego dnia.W poniższym przykładzie jak funkcja sys.fn_cdc_map_time_to_lsn może być używany do mapowania systematycznie ten czas-na podstawie zakres do LSN-opartych na zakres potrzebne dane zmiany przechwytywania wyliczania funkcji zwrócić wszystkie zmiany w tym zakres.

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');

operator relacyjny "smallest greater than' Służy do ograniczania zmian do tych, które wystąpiły po północy poprzedniego dnia.Jeśli wiele wpisów z różnych LSN wartości udziału tran_end_time wartość zidentyfikowane jako dolną granicą w cdc.lsn_time_mapping tabela, funkcja zwraca najmniejszy LSN zapewnienie uwzględnione wszystkie zapisy.Dla górnego związany, operator relacyjny "largest less than or equal to" jest używany do zapewnienia, że zakres zawiera wszystkie zapisy w danym dniu, łącznie z tymi niż mają północy jako ich tran_end_time wartości.Jeśli wiele wpisów z różnych LSN wartości udziału tran_end_time wartość zidentyfikowane jako górna granica, funkcja zwróci największą LSN zapewnienie uwzględnione wszystkie zapisy.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

W poniższym przykładzie użyto sys.fn_cdc_map_time_lsn funkcja do ustalenia, czy są wszystkie wiersze w cdc.lsn_time_mapping tabela z tran_end_time wartość, która jest większa lub równa od północy.Ta kwerenda może służyć do określenia, na przykład, czy proces przechwytywania przetworzył już zmiany popełnione przez północy poprzedniego dnia, tak aby ekstrakcji zmienić dane na ten dzień można przystąpić.

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