Udostępnij przez


Monitoring the Change Data Capture Process

Monitorowanie procesu przechwytywania danych w zmiany pozwala określić, jeśli zmiany są zapisywane poprawnie i z odpowiednim opóźnienie w tabelach zmiany.Monitoring can also help you to identify any errors that might occur.SQL Server includes two dynamic management views to help you monitor change data capture:

  • sys.dm_cdc_log_scan_sessions

    Widok zarządzania sys.dm_cdc_log_scan_sessions zawiera jeden wiersz dla każdej sesja dziennika skanowania w bieżącej bazie danych.W ostatnim wierszu reprezentuje bieżącą sesja.Widok zawiera także wiersza o identyfikatorze sesja 0, co ma zagregowane informacje dotyczące wszystkich sesja od momentu wystąpienie programu SQL Server ostatniego uruchomienia.

  • sys.dm_cdc_errors

    Widok zarządzania sys.dm_cdc_errors zawiera jeden wiersz dla każdego błędu, który napotka podczas sesja zmiany danych przechwytywania dziennika skanowania.

Identyfikacja sesji z pustych zestawy wyników

Każdy wiersz w sys.dm_cdc_log_scan_sessions reprezentuje sesja dziennika skanowania (z wyjątkiem wiersza z IDENTYFIKATOREM 0).Sesja dziennika skanowania jest odpowiednikiem wykonanie jednej sp_cdc_scan.W trakcie sesja skanowania może zwracać zmian albo zwracają wyniki puste.Jeśli zestaw wyników jest puste, kolumna empty_scan_count w sys.dm_cdc_log_scan_sessions jest ustawiona na 1.W przypadku kolejnych puste zestawy wyników, takie jak w przypadku zadanie przechwytywania jest ciągle uruchomiony, empty_scan_count w ostatnim wierszu istniejących jest zwiększany o jeden.Na przykład sys.dm_cdc_log_scan_sessions zawiera już 10 wierszy do skanowania, który zwrócił zmiany są pięciu wyniki pustego wiersza, widok zawiera wiersze 11.Ostatni wiersz ma wartość 5 kolumna empty_scan_count.Aby określić sesje, które miały puste skanowania, uruchom następującą kwerendę:

SELECT * from sys.dm_cdc_log_scan_sessions where empty_scan_count <> 0

Określanie opóźnienie

Widok zarządzania sys.dm_cdc_log_scan_sessions zawiera kolumna, która rejestruje opóźnienie dla każdej sesja przechwytywania.opóźnienie jest definiowana jako czas upływający między transakcja zostanie zatwierdzona w urządzenie źródłowe tabela i ostatniej przechwyconej transakcji jest zatwierdzony w tabela Zmiana.kolumna opóźnienie jest wypełniane tylko dla aktywnych sesji.Dla sesji o wartości większej niż 0 kolumna empty_scan_count kolumna opóźnienie jest równa 0.Następująca kwerenda zwraca średni opóźnienie dla ostatniej sesji:

SELECT latency FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0

opóźnienie danych służy do określenia, jak szybko lub wolno proces przechwytywania jest przetwarzania transakcji.Te dane jest najbardziej użyteczna, gdy proces przechwytywania jest ciągle uruchomiony.Jeśli proces przechwytywania działa zgodnie z harmonogramem, opóźnienie może być wysoka ze względu na opóźnienia między transakcjami jest zatwierdzony w tabela źródłowej i proces przechwytywania uruchomione w zaplanowanym terminie.

Innym środkiem ważne wydajności proces przechwytywania jest przepustowość.Jest to średnia liczba poleceń na sekundę, które są przetwarzane podczas każdej sesja.Aby określić przepustowość sesja, podzielić wartości kolumna command_count przez wartość kolumna okres.Następująca kwerenda zwraca średnią przepływność dla ostatniej sesji:

SELECT command_count/duration AS [Throughput] FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0

Za pomocą modułu zbierającego dane do zbierania danych próbkowanie

The SQL Server data collector lets you collect snapshots of data from any tabela or dynamiczny widok zarządzania and build a performance magazyn danych. Podczas przechwytywania danych zmian jest włączona dla bazy danych, warto wykonać migawki widoku sys.dm_cdc_log_scan_sessions i widoku sys.dm_cdc_errors w regularnych odstępach czasu w celu późniejszej analizy.Poniższa procedura konfiguruje moduł zbierający dane do zbierania danych przykładowych z widoku zarządzania sys.dm_cdc_log_scan_sessions.

Konfigurowanie danych kolekcja

  1. Włącz moduł zbierający dane i skonfiguruj zarządzania magazyn danych.Aby uzyskać więcej informacji zobaczManaging Data Collection Using SQL Server Management Studio.

  2. Należy wykonać poniższy kod, aby utworzyć niestandardowy moduł zbierający do przechwytywania danych zmian.

    USE msdb;
    
    DECLARE @schedule_uid uniqueidentifier;
    
    -- Collect and upload data every 5 minutes
    SELECT @schedule_uid = (
    SELECT schedule_uid from sysschedules_localserver_view 
    WHERE name = N'CollectorSchedule_Every_5min')
    
    DECLARE @collection_set_id int;
    
    EXEC dbo.sp_syscollector_create_collection_set
    @name = N' CDC Performance Data Collector',
    @schedule_uid = @schedule_uid,        
    @collection_mode = 0,                 
    @days_until_expiration = 30,              
    @description = N'This collection set collects CDC metadata',
    @collection_set_id = @collection_set_id output;
    
    
    -- Create a collection item using statistics from 
    -- the change data capture dynamic management view.
    DECLARE @paramters xml;
    DECLARE @collection_item_id int;
    
    SELECT @paramters = CONVERT(xml, 
        N'<TSQLQueryCollector>
            <Query>
              <Value>SELECT * FROM sys.dm_cdc_log_scan_sessions</Value>
              <OutputTable>cdc_log_scan_data</OutputTable>
            </Query>
          </TSQLQueryCollector>');
    
    EXEC dbo.sp_syscollector_create_collection_item
    @collection_set_id = @collection_set_id,
    @collector_type_uid = N'302E93D1-3424-4BE7-AA8E-84813ECF2419',
    @name = ' CDC Performance Data Collector',
    @frequency = 5, 
    @parameters = @paramters,
    @collection_item_id = @collection_item_id output;
    
    GO
    
  3. W SQL Server Management Studio, rozwiń węzeł Zarządzanie, a następnie rozwiń Dane kolekcja.Kliknij prawym przyciskiem myszy Moduł zbierający dane wydajności CDC, a następnie kliknij przycisk Uruchom zestaw zbierania danych.

  4. W magazynie danych skonfigurowane w kroku 1 zlokalizuj custom_snapshots.cdc_log_scan_data tabela.Ta tabela zawiera historyczne migawkę danych z dziennika skanowania sesji.Dane te można używać do analizowania opóźnienie, przepustowość i inne środki wydajność w czasie.