Memantau skrip Python dan R dengan Extended Events di SQL Server Pembelajaran Mesin Services

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL Managed Instance

Pelajari cara menggunakan Extended Events untuk memantau dan memecahkan masalah pada operasi yang terkait dengan SQL Server Pembelajaran Mesin Services, SQL Server Launchpad, serta skrip eksternal untuk tugas Python atau R.

Extended Events untuk SQL Server Pembelajaran Mesin Services

Untuk melihat daftar peristiwa yang terkait dengan SQL Server Pembelajaran Mesin Services, jalankan kueri berikut di SQL Server Management Studio (SSMS), ekstensi MSSQL untuk Visual Studio Code, sqlcmd, atau alat kueri T-SQL favorit Anda.

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

Untuk informasi selengkapnya tentang cara menggunakan Extended Events, lihat Alat Extended Events.

Peristiwa tambahan khusus untuk Layanan Pembelajaran Mesin

Extended event tambahan tersedia untuk komponen yang terkait dengan dan digunakan oleh SQL Server Pembelajaran Mesin Services, seperti SQL Server Launchpad, BXLServer, dan proses satelit yang memulai runtime Python atau R. Peristiwa tambahan yang diperluas ini dipicu oleh proses eksternal; oleh karena itu, peristiwa tersebut harus ditangkap menggunakan utilitas eksternal.

Untuk informasi selengkapnya tentang cara melakukannya, lihat bagian Mengumpulkan peristiwa dari proses eksternal.

Tabel kejadian yang diperluas

Kejadian Deskripsi Catatan
terima_koneksi Terjadi ketika koneksi baru diterima. Kejadian ini berfungsi untuk mencatat semua upaya koneksi.
failed_launching Peluncuran gagal. Menunjukkan kesalahan.
satellite_abort_connection Batalkan catatan koneksi
pembatalan_satelit_diterima Terpicu ketika pesan pembatalan diterima melalui koneksi satelit.
satellite_abort_sent Dipicu saat pesan pembatalan dikirim melalui koneksi satelit.
satellite_authentication_completion Diaktifkan saat autentikasi selesai untuk koneksi melalui TCP atau pipa Bernama.
penyelesaian otorisasi satelit Dipicu saat otorisasi selesai untuk koneksi melalui TCP atau Named Pipe.
pembersihan_satelit Kebakaran saat satelit memanggil pembersihan. Dipicu hanya oleh proses eksternal. Lihat instruksi tentang mengumpulkan peristiwa dari proses eksternal.
satellite_data_chunk_sent Dipicu ketika koneksi satelit selesai mengirim satu potongan data. Peristiwa ini mencatat jumlah baris yang dikirim, jumlah kolom, jumlah paket SNI yang digunakan, dan waktu yang diperlukan dalam milidetik saat mengirim chunk. Informasi ini dapat membantu Anda memahami berapa banyak waktu yang dihabiskan untuk melewati berbagai jenis data, dan berapa banyak paket yang digunakan.
penyelesaian penerimaan data satelit Dipicu ketika semua data yang diperlukan untuk kueri diterima melalui koneksi satelit. Dipicu hanya oleh proses eksternal. Lihat instruksi tentang mengumpulkan peristiwa dari proses eksternal.
Penyelesaian pengiriman data satelit Dipicu ketika semua data yang diperlukan untuk suatu sesi dikirim melalui koneksi satelit.
satellite_data_send_start Kebakaran saat transmisi data dimulai. Transmisi data dimulai tepat sebelum potongan data pertama dikirim.
satellite_error Digunakan untuk menelusuri kesalahan pada satelit SQL
satellite_invalid_sized_message Ukuran pesan tidak valid
satellite_message_coalesced Digunakan untuk melacak penggabungan pesan pada lapisan jaringan
satellite_message_ring_buffer_record catatan buffer cincin pesan
satellite_message_summary informasi ringkasan tentang pesan
ketidakcocokan versi pesan satelit Bidang versi pesan tidak cocok
satellite_messaging Digunakan untuk melacak peristiwa perpesanan (bind, unbind, dll.)
satellite_partial_message Digunakan untuk melacak pesan parsial di lapisan jaringan
satellite_schema_received Diaktifkan saat pesan skema diterima dan dibaca oleh SQL.
satellite_schema_sent Kebakaran ketika pesan skema dikirim oleh satelit. Dipicu hanya oleh proses eksternal. Lihat instruksi tentang mengumpulkan peristiwa dari proses eksternal.
Waktu mulai layanan satelit telah diposting. Diaktifkan saat pesan mulai layanan diposting ke launchpad. Ini memberi tahu Launchpad untuk memulai proses eksternal, dan berisi ID untuk sesi baru.
Pesan satelit yang tidak terduga diterima. Aktif ketika pesan tak terduga diterima. Menunjukkan kesalahan.
stack_trace Terjadi ketika cadangan memori proses diminta. Menunjukkan kesalahan.
trace_event Digunakan untuk tujuan pelacakan Peristiwa ini dapat berisi pesan pelacakan SQL Server, Launchpad, dan proses eksternal. Ini mencakup keluaran ke stdout dan stderr dari R.
launchpad_launch_start Kebakaran saat launchpad mulai meluncurkan satelit. Diaktifkan hanya dari Launchpad. Lihat instruksi untuk mengumpulkan event dari launchpad.exe.
launchpad_resume_sent Kebakaran ketika launchpad telah meluncurkan satelit dan mengirim pesan resume ke SQL Server. Diaktifkan hanya dari Launchpad. Lihat instruksi untuk mengumpulkan kejadian dari launchpad.exe.
satellite_data_chunk_sent Kebakaran ketika koneksi satelit selesai mengirim potongan data tunggal. Berisi informasi tentang jumlah kolom, jumlah baris, jumlah paket, dan waktu yang diperlukan untuk mengirim potongan tersebut.
satellite_sessionId_mismatch ID sesi pesan ini tidak diharapkan

Mengumpulkan peristiwa dari proses eksternal

SQL Server Pembelajaran Mesin Services memulai beberapa layanan yang berjalan di luar proses SQL Server. Untuk mengambil peristiwa yang terkait dengan proses eksternal ini, Anda harus membuat file konfigurasi pelacakan peristiwa dan menempatkan file di direktori yang sama dengan yang dapat dieksekusi untuk proses tersebut.

Penting

Dari SQL Server 2019, mekanisme isolasi telah berubah. Oleh karena itu, Anda perlu memberikan izin yang sesuai ke direktori tempat file konfigurasi pelacakan peristiwa disimpan. Untuk informasi selengkapnya tentang cara mengatur izin ini, lihat bagian izin file di SQL Server 2019 di Windows: perubahan isolasi untuk Layanan Pembelajaran Mesin.

  • SQL Server Launchpad

    Untuk mengambil peristiwa yang terkait dengan Launchpad, tempatkan file .xml di direktori Binn untuk instans SQL Server. Dalam penginstalan default, ini adalah:

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

  • BXLServer adalah proses satelit yang mendukung ekstensibilitas SQL dengan bahasa skrip eksternal, seperti R atau Python. Instans BxlServer yang terpisah dijalankan untuk setiap instans bahasa eksternal.

    Untuk mengambil peristiwa yang terkait dengan BXLServer, tempatkan file .xml di direktori penginstalan R atau Python. Dalam penginstalan default, ini adalah:

    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.

File konfigurasi harus diberi nama yang sama dengan yang dapat dieksekusi, menggunakan format "[name].xevents.xml". Dengan kata lain, file harus diberi nama sebagai berikut:

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

File konfigurasi itu sendiri memiliki format berikut:

<?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>  
  • Untuk mengonfigurasi pelacakan, edit placeholder nama sesi, placeholder untuk nama berkas ([SessionName].xel), dan nama peristiwa yang ingin Anda rekam. Misalnya, [XEvent Name 1], [XEvent Name 1]).
  • Berapa pun jumlah tag paket event yang muncul, semuanya akan dikumpulkan selama atribut `name` benar.

Contoh: Merekam event Launchpad

Contoh berikut menunjukkan definisi jejak peristiwa untuk layanan 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>  
  • Tempatkan file .xml di direktori Binn untuk instans SQL Server.
  • File ini harus diberi nama Launchpad.xevents.xml.

Contoh: Merekam event BXLServer

Contoh berikut menunjukkan definisi pelacakan peristiwa untuk BXLServer yang dapat dieksekusi.

<?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>  
  • Tempatkan file .xml di direktori yang sama dengan BXLServer yang dapat dieksekusi.
  • File ini harus diberi nama bxlserver.xevents.xml.