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 di Istanza gestita di SQL di Azure

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

Eventi estesi di SQL Server Machine Learning Services

Per visualizzare un elenco di eventi correlati a Machine Learning Services per SQL Server, eseguire la query seguente in SQL Server Management Studio (SSMS),l'estensione MSSQL per Visual Studio Code, sqlcmd o lo strumento di query T-SQL preferito.

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 eventi estesi aggiuntivi per i componenti correlati a e usati da SQL Server Machine Learning Services, ad esempio SQL Server Launchpad, BXLServer e 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

Evento Descrizione Note
accetta_connessione Si verifica quando viene accettata una nuova connessione. Questo evento viene usato per registrare tutti i tentativi di connessione.
avvio_non riuscito Avvio non riuscito. Indica un errore.
satellite_interrompi_connessione Registrazione dell'interruzione della connessione
satellite_abort_received Si attiva quando viene ricevuto un messaggio di annullamento tramite una connessione satellitare.
satellite_abort_sent Si attiva quando viene inviato un messaggio di interruzione tramite una connessione satellitare.
completamento_autenticazione_satellitare Generato quando viene completata l'autenticazione per una connessione su TCP o Named pipe.
autorizzazione satellite completata Si attiva quando viene completata l'autorizzazione per una connessione tramite TCP o pipe denominata.
satellite_cleanup Si attiva quando il satellite richiama la routine di pulizia. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
frammento_di_dati_satellitari_inviato Si attiva quando la connessione satellitare termina 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.
ricezione_dati_satellitari_completata Si attiva quando una query riceve tutti i dati richiesti tramite la connessione satellitare. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
completamento_invio_dati_satellitari Si attiva quando tutti i dati richiesti per una sessione vengono inviati tramite la connessione satellitare.
avvio_invio_dati_satellitari Si attiva quando si avvia la trasmissione dei dati. La trasmissione dei dati si avvia poco prima dell'invio del primo blocco di dati.
satellite_error Utilizzato per tracciare gli errori di SQL Satellite.
satellite_invalid_sized_message La dimensione del messaggio non è valida.
messaggio_satellite_unificato Usato per tenere traccia dei messaggi che si uniscono a livello di rete.
record del buffer circolare dei messaggi satellitari Record del buffer circolare dei messaggi
riepilogo del messaggio satellitare Informazioni di riepilogo sui messaggi.
mancata corrispondenza della versione del messaggio satellite Il campo della versione del messaggio non corrisponde.
messaggistica satellitare Usato per tenere traccia degli eventi di messaggistica (associazione, annullamento dell'associazione e così via)
messaggio satellitare parziale Usato per tenere traccia dei messaggi parziali a livello di rete.
satellite_schema_received Si attiva quando il messaggio di schema viene ricevuto e letto da SQL.
satellite_schema_sent Si attiva quando il messaggio di schema viene inviato dal satellite. Generato solo da processi esterni. Vedere le istruzioni sulla raccolta di eventi da processi esterni.
Avvio del servizio satellitare registrato Si attiva quando il messaggio di avvio del servizio viene pubblicato nel Launchpad. questo evento indica a Launchpad di avviare il processo esterno e contiene un ID per la nuova sessione.
Messaggio inatteso ricevuto dal satellite Si attiva quando viene ricevuto un messaggio non previsto. Indica un errore.
stack_trace Si verifica quando viene richiesto 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 Si attiva quando Launchpad inizia il lancio di un satellite. Avviato solo da Launchpad. Vedere le istruzioni sulla raccolta di eventi da launchpad.exe.
launchpad_resume_sent Si attiva quando Launchpad ha avviato il satellite e ha inviato un messaggio di ripresa a SQL Server. Attivato solo da Launchpad. Vedere le istruzioni sulla raccolta di eventi da launchpad.exe.
frammento_di_dati_satellitari_inviato Si attiva quando la connessione satellitare termina 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 della traccia degli eventi. 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 standard, questo sarebbe:

    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, sarebbe:

    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].
  • Può comparire qualsiasi numero di tag event package e verranno raccolti purché l'attributo name sia corretto.

Esempio: Rilevamento degli eventi di 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 di 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.