Udostępnij przez


Monitorowanie skryptów języka Python i R przy użyciu zdarzeń rozszerzonych w usługach SQL Server Machine Learning Services

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje usługi Azure SQL Managed Instance

Dowiedz się, jak używać zdarzeń rozszerzonych do monitorowania i rozwiązywania problemów operacji związanych z usługami SQL Server Machine Learning Services, programem SQL Server Launchpad i zewnętrznymi skryptami zadań języka Python lub R.

Zdarzenia rozszerzone dla usług SQL Server Machine Learning Services

Aby wyświetlić listę zdarzeń związanych z usługami SQL Server Machine Learning Services, uruchom następujące zapytanie w programie SQL Server Management Studio (SSMS),rozszerzeniu MSSQL dla programu Visual Studio Code, sqlcmd lub ulubionym narzędziu do wykonywania zapytań T-SQL.

SELECT o.name AS event_name, o.description
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
AND p.name = 'SQLSatellite';

Aby uzyskać więcej informacji na temat używania zdarzeń rozszerzonych, zobacz Narzędzia zdarzeń rozszerzonych.

Dodatkowe zdarzenia specyficzne dla usług Machine Learning Services

Dodatkowe zdarzenia rozszerzone są dostępne dla składników, które są związane z usługami SQL Server Machine Learning Services, takimi jak sql Server Launchpad i BXLServer, oraz proces satelitarny, który uruchamia środowisko uruchomieniowe języka Python lub R. Te dodatkowe zdarzenia rozszerzone są wyzwalane z procesów zewnętrznych; dlatego należy je przechwycić przy użyciu narzędzia zewnętrznego.

Aby uzyskać więcej informacji o tym, jak to zrobić, zobacz sekcję Zbieranie zdarzeń z procesów zewnętrznych.

Tabela zdarzeń rozszerzonych

Event Description Notatki
akceptacja_połączenia Występuje po zaakceptowaniu nowego połączenia. To zdarzenie służy do rejestrowania wszystkich prób połączenia.
nieudane_uruchomienie Uruchamianie nie powiodło się. Wskazuje błąd.
przerwij_połączenie_satellite Przerwanie zapisu połączenia
odebrane_przerwanie_satellitarne Wystrzeliwa po odebraniu komunikatu przerwania za pośrednictwem połączenia satelitarnego.
satellite_abort_sent Uruchamia się, gdy komunikat przerwania jest wysyłany przez połączenie satelitarne.
zakończenie_uwierzytelnienia_satelitarnego Uruchamia się po zakończeniu uwierzytelniania dla połączenia za pośrednictwem protokołu TCP lub nazwanego potoku.
zakończenie_autoryzacji_sateltitarnej Uruchamia się po zakończeniu autoryzacji dla połączenia za pośrednictwem protokołu TCP lub nazwanego potoku.
oczyszczanie satelitarne Aktywuje się, gdy satelita wywołuje czyszczenie. Wyzwolone tylko z procesu zewnętrznego. Zobacz instrukcje dotyczące zbierania zdarzeń z procesów zewnętrznych.
kawałek_danych_satelitarnych_wysłany Uruchamia się, gdy połączenie satelitarne zakończy wysyłanie pojedynczego fragmentu danych. Zdarzenie zgłasza liczbę wysłanych wierszy, liczbę kolumn, liczbę użytych pakietów SNI i czas, który upłynął w milisekundach podczas wysyłania fragmentu. Informacje te mogą pomóc zrozumieć, ile czasu poświęca się na przekazywanie różnych typów danych i ile pakietów jest używanych.
ukończenie odbioru danych satelitarnych Uruchamia się, gdy dane wymagane przez zapytanie są odbierane przez połączenie satelitarne. Wyzwolone tylko z procesu zewnętrznego. Zobacz instrukcje dotyczące zbierania zdarzeń z procesów zewnętrznych.
zakończenie_wysyłania_danych_satelitarnych Uruchamia się, gdy wszystkie wymagane dane dla sesji są wysyłane przez połączenie satelitarne.
rozpocznij_wysyłanie_danych_satellite Uruchamia się, gdy rozpoczyna się transmisja danych. Przesyłanie danych rozpoczyna się tuż przed wysłaniem pierwszego fragmentu danych.
błąd satelity Służy do śledzenia błędu satelity SQL
wiadomość_o_nieprawidłowym_rozmiarze_satelity Rozmiar wiadomości jest nieprawidłowy
wiadomość_satellitarna_zjednoczona Służy do śledzenia łączenia komunikatów w warstwie sieci
wiadomość_satelitarna_pierścieniowy_bufor_zapis rekord buforu pierścienia komunikatów
podsumowanie wiadomości satelitarnych podsumowanie informacji o komunikatach
niedopasowanie_wersji_komunikatu_satelitarnego Pole wersji komunikatu nie jest zgodne
satellite_messaging (komunikacja satelitarna) Służy do śledzenia zdarzeń związanych z komunikatami (wiązanie, odwiązywanie itp.)
wiadomość_częściowa_satellite Służy do śledzenia częściowego komunikatu w warstwie sieci
schemat_satelity_odebrano Uruchamia się, gdy komunikat schematu jest odbierany i odczytywany przez program SQL.
schemat_satellity_wysłany Uruchamia się, gdy komunikat schematu jest wysyłany przez satelitę. Wyzwolone tylko z procesu zewnętrznego. Zobacz instrukcje dotyczące zbierania zdarzeń z procesów zewnętrznych.
rozpoczęcie_świadczenia_usługi_satelitarnej_opublikowane Uruchamia się po wysłaniu komunikatu o uruchomieniu usługi na launchpad. To instruuje program Launchpad, aby uruchomił proces zewnętrzny i zawiera identyfikator nowej sesji.
wiadomość_nieoczekiwana_od_satellity_otrzymana Uruchamia się po odebraniu nieoczekiwanego komunikatu. Wskazuje błąd.
stack_trace Występuje, gdy zażądano zrzutu pamięci procesu. Wskazuje błąd.
śledź_zdarzenie Używane do celów śledzenia Te zdarzenia mogą zawierać komunikaty śledzenia SQL Server, Launchpad oraz komunikaty z procesów zewnętrznych. Obejmuje to dane wyjściowe do stdout i stderr z języka R.
launchpad_rozpoczęcie_uruchomienia Wyzwala się, gdy platforma startowa rozpoczyna wystrzeliwanie satelity. Wyzwolone tylko z Launchpad. Zobacz instrukcje dotyczące zbierania zdarzeń z launchpad.exe.
wysłano_życiorys_launchpad Uruchamia się, gdy launchpad wystrzeli satelitę i prześle komunikat wznowienia do programu SQL Server. Wyzwolone tylko z Launchpad. Zobacz instrukcje dotyczące zbierania zdarzeń z launchpad.exe.
kawałek_danych_satelitarnych_wysłany Uruchamia się, gdy połączenie satelitarne zakończy wysyłanie pojedynczego fragmentu danych. Zawiera informacje o liczbie kolumn, liczbie wierszy, liczbie pakietów i czasie, który upłynął podczas wysyłania fragmentu.
satellite_sessionId_mismatch Identyfikator sesji komunikatu nie jest oczekiwany

Zbieranie zdarzeń z procesów zewnętrznych

Usługi SQL Server Machine Learning Services uruchamiają niektóre usługi, które działają poza procesem programu SQL Server. Aby przechwycić zdarzenia związane z tymi procesami zewnętrznymi, należy utworzyć plik konfiguracji śledzenia zdarzeń i umieścić plik w tym samym katalogu co plik wykonywalny dla tego procesu.

Ważne

Z programu SQL Server 2019 mechanizm izolacji uległ zmianie. W związku z tym należy przyznać odpowiednie uprawnienia do katalogu, w którym jest przechowywany plik konfiguracji śledzenia zdarzeń. Aby uzyskać więcej informacji na temat ustawiania tych uprawnień, zobacz sekcję Uprawnienia do plików w programie SQL Server 2019 w systemie Windows: zmiany izolacji dla usług Machine Learning Services.

  • SQL Server Launchpad

    Aby przechwycić zdarzenia związane z programem Launchpad, umieść plik .xml w katalogu Binn dla wystąpienia programu SQL Server. W domyślnej instalacji będzie to:

    C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\MSSQL\Binn.

  • BXLServer to proces satelitarny, który obsługuje rozszerzalność SQL za pomocą języków skryptów zewnętrznych, takich jak R lub Python. Dla każdego wystąpienia języka zewnętrznego jest uruchamiane oddzielne wystąpienie serwera BxlServer.

    Aby przechwycić zdarzenia związane z serwerem BXLServer, umieść plik .xml w katalogu instalacyjnym języka R lub Python. W domyślnej instalacji będzie to:

    R:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64.

    Python:C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\revoscalepy\rxLibs.

Plik konfiguracji musi mieć taką samą nazwę jak plik wykonywalny, używając formatu "[name].xevents.xml". Innymi słowy, pliki muszą być nazwane w następujący sposób:

  • Launchpad.xevents.xml
  • bxlserver.xevents.xml

Sam plik konfiguracji ma następujący format:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="[session name]" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="you">Xevent for launchpad or bxl server.</description>  
    <event package="SQLSatellite" name="[XEvent Name 1]" />  
    <event package="SQLSatellite" name="[XEvent Name 2]" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="[SessionName].xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Aby skonfigurować ślad, zmodyfikuj symbol zastępczy nazwy sesji , symbol zastępczy nazwy pliku ([SessionName].xel) i nazwy zdarzeń, które chcesz przechwycić, na przykład [XEvent Name 1], [XEvent Name 1]).
  • Może pojawić się dowolna liczba tagów pakietu zdarzeń, które będą zbierane, o ile atrybut name jest poprawny.

Przykład: Rejestrowanie zdarzeń Launchpad

W poniższym przykładzie przedstawiono definicję śledzenia zdarzeń dla usługi Launchpad:

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
<event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="launchpad_launch_start" />  
    <event package="SQLSatellite" name="launchpad_resume_sent" />  
    <target package="package0" name="event_file">  
      <parameter name="filename" value="launchpad_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Umieść plik .xml w katalogu Binn dla wystąpienia programu SQL Server.
  • Ten plik musi mieć nazwę Launchpad.xevents.xml.

Przykład: Przechwytywanie zdarzeń BXLServer

Poniższy przykład przedstawia definicję śledzenia zdarzeń dla pliku wykonywalnego BXLServer.

<?xml version="1.0" encoding="utf-8"?>  
<event_sessions>  
 <event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">  
    <description owner="hay">Xevent for sql tdd runner.</description>  
    <event package="SQLSatellite" name="satellite_abort_received" />  
    <event package="SQLSatellite" name="satellite_authentication_completion" />  
    <event package="SQLSatellite" name="satellite_cleanup" />  
    <event package="SQLSatellite" name="satellite_data_receive_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_completion" />  
    <event package="SQLSatellite" name="satellite_data_send_start" />  
    <event package="SQLSatellite" name="satellite_schema_sent" />   
    <event package="SQLSatellite" name="satellite_unexpected_message_received" />    
    <event package="SQLSatellite" name="satellite_data_chunk_sent" />   
    <target package="package0" name="event_file">  
      <parameter name="filename" value="satellite_session.xel" />  
      <parameter name="max_file_size" value="10" />  
      <parameter name="max_rollover_files" value="10" />  
    </target>  
  </event_session>  
</event_sessions>  
  • Umieść plik .xml w tym samym katalogu co plik wykonywalny BXLServer.
  • Ten plik musi mieć nazwę bxlserver.xevents.xml.

Dalsze kroki