Condividi tramite


Monitorare gli script Python e R con eventi estesi in Machine Learning Services per SQL Server

Si applica a: SQL Server 2016 (13.x) e versioni successive Istanza gestita di SQL di Azure

Informazioni su come usare gli eventi estesi per monitorare e risolvere i problemi delle operazioni correlate agli script esterni di processi di Machine Learning Services per SQL Server, Launchpad di SQL Server e Python o R.

Eventi estesi per Machine Learning Services per SQL Server

Per visualizzare un elenco di eventi correlati a Machine Learning Services per SQL Server, eseguire la query seguente da Azure Data Studio o da SQL Server Management Studio.

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

Per altre informazioni su come usare gli eventi estesi, vedere Strumenti degli eventi estesi.

Eventi aggiuntivi specifici di Machine Learning Services

Sono disponibili altri eventi estesi per i componenti correlati a Machine Learning Services per SQL Server e usati da tale funzionalità, ad esempio Launchpad di SQL Server e BXLServer, il processo satellite che avvia il runtime di Python o R. Questi eventi estesi aggiuntivi vengono attivati dai processi esterni e devono quindi essere acquisiti usando un'utilità esterna.

Per altre informazioni su come eseguire questa operazione, vedere Raccolta di eventi da processi esterni.

Tabella degli eventi estesi

Event Descrizione Note
connection_accept Si verifica quando viene accettata una nuova connessione. Questo evento viene usato per registrare tutti i tentativi di connessione.
failed_launching Avvio non riuscito. Indica un errore.
satellite_abort_connection Record di interruzione della connessione.
satellite_abort_received Generato quando viene ricevuto un messaggio di interruzione su una connessione satellite.
satellite_abort_sent Generato quando viene inviato un messaggio di interruzione su una connessione satellite.
satellite_authentication_completion Generato quando viene completata l'autenticazione per una connessione su TCP o Named pipe.
satellite_authorization_completion Generato quando viene completata l'autorizzazione per una connessione su TCP o Named pipe.
satellite_cleanup Generato quando il satellite chiama la pulizia. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
satellite_data_chunk_sent Generato quando la connessione satellite completa l'invio di un singolo blocco di dati. L'evento indica il numero di righe inviate, il numero di colonne, il numero di pacchetti SNI usati e il tempo trascorso in millisecondi per l'invio del blocco. Le informazioni possono aiutare a determinare il tempo necessario per passare tipi di dati diversi e il numero di pacchetti usati.
satellite_data_receive_completion Generato quando vengono ricevuti tutti i dati richiesti da una query sulla connessione satellite. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
satellite_data_send_completion Generato quando vengono ricevuti tutti i dati richiesti per una sessione sulla connessione satellite.
satellite_data_send_start Generato quando si avvia la trasmissione dei dati. La trasmissione dei dati si avvia poco prima dell'invio del primo blocco di dati.
satellite_error Usato per tenere traccia degli errori del satellite di sql.
satellite_invalid_sized_message La dimensione del messaggio non è valida.
satellite_message_coalesced Usato per tenere traccia dei messaggi che si uniscono a livello di rete.
satellite_message_ring_buffer_record Record del buffer circolare del messaggio.
satellite_message_summary Informazioni di riepilogo sui messaggi.
satellite_message_version_mismatch Il campo della versione del messaggio non corrisponde.
satellite_messaging Usato per tenere traccia degli eventi di messaggistica (associazione, annullamento dell'associazione e così via)
satellite_partial_message Usato per tenere traccia dei messaggi parziali a livello di rete.
satellite_schema_received Generato quando il messaggio dello schema viene ricevuto e letto da SQL.
satellite_schema_sent Generato quando il messaggio dello schema viene inviato tramite il satellite. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
satellite_service_start_posted Generato quando avviare il servizio messaggio viene registrato nel Launchpad. questo evento indica a Launchpad di avviare il processo esterno e contiene un ID per la nuova sessione.
satellite_unexpected_message_received Generato quando viene ricevuto un messaggio imprevisto. Indica un errore.
stack_trace Si verifica alla richiesta di un dump di memoria del processo. Indica un errore.
trace_event Usato a scopo di monitoraggio Questi eventi possono contenere SQL Server, Launchpad e i messaggi di traccia dei processi esterni. Questi includono l'output in stdout e stderr da R.
launchpad_launch_start Generato quando Launchpad avvia un satellite. Generato solo da Launchpad Vedere le istruzioni sulla raccolta di eventi da launchpad.exe.
launchpad_resume_sent Generato quando Launchpad ha avviato il satellite e inviato un messaggio di ripristino a SQL Server. Generato solo da Launchpad Vedere le istruzioni sulla raccolta di eventi da launchpad.exe.
satellite_data_chunk_sent Generato quando la connessione satellite completa l'invio di un singolo blocco di dati. Contiene informazioni sul numero di colonne, numero di righe, numero di pacchetti e sul tempo impiegato per l'invio del blocco.
satellite_sessionId_mismatch L'ID della sessione del messaggio non è previsto

Raccolta di eventi da processi esterni

Machine Learning Services per SQL Server avvia alcuni servizi che vengono eseguiti all'esterno del processo di SQL Server. Per acquisire gli eventi correlati a questi processi esterni, è necessario creare un file di configurazione per la traccia degli eventi e inserire il file nella stessa directory del file eseguibile per il processo.

Importante

A partire da SQL Server 2019, il meccanismo di isolamento è stato modificato. È quindi necessario assegnare le autorizzazioni appropriate alla directory in cui è archiviato il file di configurazione del tracciato. Per altre informazioni su come impostare queste autorizzazioni, consultare la sezione Autorizzazioni dei file in SQL Server 2019 su Windows: Modifiche all'isolamento per i servizi di Machine Learning.

  • Launchpad di SQL Server

    Per acquisire gli eventi correlati a Launchpad, posizionare il file con estensione xml nella directory Binn per l'istanza di SQL Server. In un'installazione predefinita la directory è:

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

  • BXLServer è il processo satellite che supporta l'estendibilità di SQL con linguaggi di script esterni, come R o Python. Un'istanza separata di BxlServer viene avviata per ogni istanza del linguaggio esterno.

    Per acquisire gli eventi correlati a BXLServer, posizionare il file con estensione xml nella directory di installazione di R o Python. In un'installazione predefinita la directory è:

    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.

Il file di configurazione deve avere lo stesso nome del file eseguibile, con il formato "[nome].xeventi.xml". In altre parole, i file devono essere denominati come segue:

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

Il file di configurazione presenta il formato seguente:

<?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>  
  • Per configurare la traccia, modificare il segnaposto session name, il segnaposto per il nome del file ([SessionName].xel) e i nomi degli eventi da acquisire, ad esempio [XEvent Name 1] o [XEvent Name 1].
  • Verrà raccolto qualsiasi numero di tag event package visualizzati, a condizione che l'attributo name sia corretto.

Esempio: Acquisizione degli eventi Launchpad

L'esempio seguente illustra la definizione della traccia degli eventi per il servizio 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>  
  • Posizionare il file con estensione xml nella directory Binn per l'istanza di SQL Server.
  • Il nome del file deve essere Launchpad.xevents.xml.

Esempio: Acquisizione degli eventi BXLServer

L'esempio seguente illustra la definizione di una traccia di eventi per l'eseguibile di 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>  
  • Posizionare il file con estensione xml nella stessa directory dell'eseguibile di BXLServer.
  • Il nome del file deve essere bxlserver.xevents.xml.

Passaggi successivi