Udostępnij za pośrednictwem


sys.fn_cdc_map_time_to_lsn (Transact-SQL)

Zwraca wartość numer sekwencyjny dziennika (LSN) z start_lsn kolumnaCDC.lsn_time_mapping systemowej tabela dla określonego czas.Systematycznie mapować zakresów typu Data/Godzina do zakres na LSN potrzebne zmiany funkcja wyliczania przechwytywania danych za pomocą tej funkcja CDC.fn_cdc_get_all_changes_<capture_instance> i CDC.fn_cdc_get_net_changes_<capture_instance> Aby przywrócić zmiany danych w tym zakresie.

Topic link iconKonwencje składni języka Transact-SQL

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ą mniejszą niż lub równe | najmniejszą liczbę większą niż | najmniejszą większe lub równe}
    Służy do identyfikowania różnych wartości LSN w od CDC.lsn_time_mapping skojarzone tabelatran_end_time spełnia relacji w porównaniu z tracking_time wartość.

    relational_operator jest nvarchar(30).

  • tracking_time
    Is the datetime value to match against.tracking_time is datetime.

Zwracany typ

binary(10)

Remarks

Aby zrozumieć, w jaki sposób sys.fn_cdc_map_time_lsn można użyć do mapowania typu Data/Godzina zakresów LSN zakresy, należy rozważyć następujący scenariusz.Skala kolumna.se_collatidIdentyfikator sortowanie kolumna.se_xvtypeW poniższym przykładzie w jaki sposób funkcja sys.fn_cdc_map_time_to_lsn może służyć do systematycznie mapować ten zakres od czas na podstawie LSN zakres potrzebne zmiany funkcji wyliczania przechwytywania danych do zwrócenia wszystkich zmian w tym zakresie.

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', @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ść jako dolna granica w CDC.lsn_time_mapping tabela, funkcja zwróci LSN najmniejszą, zapewniając, że wszystkie zapisy uwzględnione.Dla górnej powiązane operator relacyjny ‘largest less than or equal to’ Służy do zapewnienia, że zakres zawiera wszystkie zapisy w danym dniu, łącznie z tymi niż północy jako ich tran_end_time wartość.Jeśli wiele wpisów z różnych LSN wartości udziału tran_end_time wartość jako górna granica, funkcja zwróci największą LSN, zapewniając, że wszystkie zapisy uwzględnione.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

W poniższym przykładzie użyto sys.fn_cdc_map_time_lsn Funkcja służąca do ustalenia, czy są wszystkie wiersze w CDC.lsn_time_mapping tabelatran_end_time wartość, która jest większa niż lub równa od północy.Określa, czy kolumna obsługuje wartości NULL.

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