Memecahkan masalah dengan layanan Launchpad yang menjalankan skrip Python dan R di SQL Server Machine Learning Services

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

Artikel ini menyediakan panduan pemecahan masalah untuk masalah yang melibatkan layanan Launchpad SQL Server yang digunakan dengan Layanan Pembelajaran Mesin. Layanan Launchpad mendukung eksekusi skrip eksternal untuk R dan Python. Beberapa masalah dapat mencegah Launchpad dimulai, termasuk masalah konfigurasi atau perubahan, atau protokol jaringan yang hilang.

Menentukan apakah Launchpad sedang berjalan

  1. Buka Pengelola Konfigurasi SQL Server. Dari baris perintah, ketik SQLServerManager13.msc, SQLServerManager14.msc, atau SQLServerManager15.msc.

  2. Catat akun layanan tempat Launchpad berjalan. Setiap instans tempat R atau Python diaktifkan harus memiliki instans sendiri dari layanan Launchpad. Misalnya, layanan untuk instans bernama mungkin sesuatu seperti MSSQLLaunchpad$InstanceName.

  3. Jika layanan dihentikan, mulai ulang. Saat memulai ulang, jika ada masalah dengan konfigurasi, pesan diterbitkan di log peristiwa sistem, dan layanan dihentikan lagi. Periksa log peristiwa sistem untuk detail tentang mengapa layanan berhenti.

  4. Tinjau konten RSetup.log, dan pastikan tidak ada kesalahan dalam penyiapan. Misalnya, pesan Keluar dengan kode 0 menunjukkan kegagalan layanan untuk memulai.

  5. Untuk mencari kesalahan lain, tinjau konten rlauncher.log.

Periksa akun layanan Launchpad

Akun layanan default mungkin adalah "NT Service$SQL2016", "NT Service$SQL2017", atau "NT Service$SQL2019". Bagian akhir mungkin bervariasi, tergantung pada nama instans SQL Anda.

Layanan Launchpad (Launchpad.exe) berjalan dengan menggunakan akun layanan hak istimewa rendah. Namun, untuk memulai R dan Python dan berkomunikasi dengan instans database, akun layanan Launchpad memerlukan hak pengguna berikut:

  • Masuk sebagai layanan (SeServiceLogonRight)
  • Mengganti token tingkat proses (SeAssignPrimaryTokenPrivilege)
  • Pemeriksaan melintasi bypass (SeChangeNotifyPrivilege)
  • Menyesuaikan kuota memori untuk proses (SeIncreaseQuotaSizePrivilege)

Untuk informasi tentang hak pengguna ini, lihat bagian "Hak istimewa dan hak Windows" di Mengonfigurasi akun dan izin layanan Windows.

Tip

Jika Anda terbiasa dengan penggunaan alat Platform Diagnostik Dukungan (SDP) untuk diagnostik SQL Server, Anda dapat menggunakan SDP untuk meninjau file output dengan nama MachineName_UserRights.txt.

Grup pengguna untuk Launchpad tidak dapat masuk secara lokal

Selama penyiapan Layanan Pembelajaran Mesin, SQL Server membuat grup pengguna Windows SQLRUserGroup dan kemudian menyediakannya dengan semua hak yang diperlukan agar Launchpad terhubung ke SQL Server dan menjalankan pekerjaan skrip eksternal. Jika grup pengguna ini diaktifkan, grup pengguna ini juga digunakan untuk menjalankan skrip Python.

Namun, di organisasi di mana kebijakan keamanan yang lebih ketat diberlakukan, hak yang diperlukan oleh grup ini mungkin telah dihapus secara manual, atau mungkin secara otomatis dicabut oleh kebijakan. Jika hak telah dihapus, Launchpad tidak dapat lagi tersambung ke SQL Server, dan SQL Server tidak dapat memanggil runtime eksternal.

Untuk memperbaiki masalah, pastikan bahwa grup SQLRUserGroup memiliki hak sistem Izinkan masuk secara lokal.

Untuk informasi selengkapnya, lihat Mengonfigurasi akun dan izin layanan Windows.

Izin untuk menjalankan skrip eksternal

Bahkan jika Launchpad dikonfigurasi dengan benar, launchpad mengembalikan kesalahan jika pengguna tidak memiliki izin untuk menjalankan skrip R atau Python.

Jika Anda menginstal SQL Server sebagai administrator database atau Anda adalah pemilik database, Anda secara otomatis diberikan izin ini. Namun, pengguna lain biasanya memiliki izin yang lebih terbatas. Jika mereka mencoba menjalankan skrip R, mereka mendapatkan kesalahan Launchpad.

Untuk memperbaiki masalah, dalam SQL Server Management Studio, administrator keamanan dapat mengubah login SQL atau akun pengguna Windows dengan menjalankan skrip berikut:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO <username>

Untuk informasi selengkapnya, lihat GRANT (Transact-SQL.

Kesalahan Launchpad umum

Bagian ini mencantumkan pesan kesalahan paling umum yang dikembalikan Launchpad.

"Tidak dapat meluncurkan runtime untuk skrip R"

Jika grup Windows untuk pengguna R (juga digunakan untuk Python) tidak dapat masuk ke instans yang menjalankan Layanan R, Anda mungkin melihat kesalahan berikut:

  • Kesalahan yang dihasilkan saat Anda mencoba menjalankan skrip R:

    • Tidak dapat meluncurkan runtime untuk skrip 'R'. Silakan periksa konfigurasi runtime 'R'.

    • Terjadi kesalahan skrip eksternal. Tidak dapat meluncurkan runtime.

  • Kesalahan yang dihasilkan oleh layanan SQL Server Launchpad:

    • Gagal menginisialisasi RLauncher.dllpeluncur

    • Tidak ada dll peluncur yang terdaftar!

    • Log keamanan menunjukkan bahwa akun NT SERVICE tidak dapat masuk

Untuk informasi tentang cara memberi grup pengguna ini izin yang diperlukan, lihat Menginstal SQL Server R Services.

Catatan

Batasan ini tidak berlaku jika Anda menggunakan login SQL untuk menjalankan skrip R dari stasiun kerja jarak jauh.

"Kegagalan masuk: pengguna belum diberikan jenis masuk yang diminta"

Secara default, SQL Server Launchpad menggunakan akun berikut pada startup: NT Service\MSSQLLaunchpad. Akun dikonfigurasi dengan penyiapan SQL Server untuk memiliki semua izin yang diperlukan.

Jika Anda menetapkan akun lain ke Launchpad, atau hak dihapus oleh kebijakan pada komputer SQL Server, akun mungkin tidak memiliki izin yang diperlukan, dan Anda mungkin melihat kesalahan ini:

ERROR_LOGON_TYPE_NOT_GRANTED 1385 (0x569) Kegagalan masuk: pengguna belum diberikan tipe masuk yang diminta di komputer ini.

Untuk memberikan izin yang diperlukan ke akun layanan baru, gunakan aplikasi Kebijakan Keamanan Lokal, dan perbarui izin pada akun untuk menyertakan izin berikut:

  • Menyesuaikan kuota memori untuk proses (SeIncreaseQuotaPrivilege)
  • Pemeriksaan melintasi bypass (SeChangeNotifyPrivilege)
  • Masuk sebagai layanan (SeServiceLogonRight)
  • Mengganti token tingkat proses (SeAssignPrimaryTokenPrivilege)

"Tidak dapat berkomunikasi dengan layanan Launchpad"

Jika Anda telah menginstal dan kemudian mengaktifkan pembelajaran mesin, tetapi Anda mendapatkan kesalahan ini ketika Anda mencoba menjalankan skrip R atau Python, layanan Launchpad untuk instans mungkin telah berhenti berjalan.

  1. Dari prompt perintah Windows, buka Pengelola Konfigurasi SQL Server. Untuk informasi selengkapnya, lihat Pengelola Konfigurasi SQL Server.

  2. Klik kanan SQL Server Launchpad untuk instans, lalu pilih Properti.

  3. Pilih tab Layanan , lalu verifikasi bahwa layanan sedang berjalan. Jika tidak berjalan, ubah Mode Mulai ke Otomatis, lalu pilih Terapkan.

  4. Memulai ulang layanan biasanya memperbaiki masalah sehingga skrip pembelajaran mesin dapat berjalan. Jika mulai ulang tidak memperbaiki masalah, perhatikan jalur dan argumen di properti Jalur Biner , dan lakukan hal berikut:

    a. Tinjau file .config peluncur dan pastikan bahwa direktori kerja valid.

    b. Pastikan bahwa grup Windows yang digunakan oleh Launchpad dapat tersambung ke instans SQL Server.

    c. Jika Anda mengubah salah satu properti layanan, mulai ulang layanan Launchpad.

"Pembuatan kesalahan fatal tmpFile gagal"

Dalam skenario ini, Anda telah berhasil menginstal fitur pembelajaran mesin, dan Launchpad berjalan. Anda mencoba menjalankan beberapa kode R atau Python sederhana, tetapi Launchpad gagal dengan kesalahan seperti berikut:

Tidak dapat berkomunikasi dengan runtime untuk skrip R. Silakan periksa persyaratan runtime R.

Pada saat yang sama, runtime skrip eksternal menulis pesan berikut sebagai bagian dari pesan STDERR:

Kesalahan fatal: pembuatan tmpfile gagal.

Kesalahan ini menunjukkan bahwa akun yang coba digunakan Launchpad tidak memiliki izin untuk masuk ke database. Situasi ini dapat terjadi ketika kebijakan keamanan yang ketat diterapkan. Untuk menentukan apakah ini masalahnya, tinjau log SQL Server, dan periksa untuk melihat apakah akun MSSQLSERVER01 ditolak saat masuk. Informasi yang sama disediakan dalam log yang khusus untuk R_SERVICES atau PYTHON_SERVICES. Cari ExtLaunchError.log.

Secara default, 20 akun disiapkan dan dikaitkan dengan proses Launchpad.exe, dengan nama MSSQLSERVER01 hingga MSSQLSERVER20. Jika Anda memanfaatkan R atau Python dengan berat, Anda dapat meningkatkan jumlah akun.

Untuk mengatasi masalah ini, pastikan bahwa grup memiliki izin Izinkan Masuk Secara Lokal ke instans lokal tempat fitur pembelajaran mesin telah diinstal dan diaktifkan. Di beberapa lingkungan, tingkat izin ini mungkin memerlukan pengecualian GPO dari administrator jaringan.

"Tidak cukup kuota untuk memproses perintah ini"

Kesalahan ini dapat berarti salah satu dari beberapa hal:

  • Launchpad mungkin memiliki pengguna eksternal yang tidak cukup untuk menjalankan kueri eksternal. Misalnya, jika Anda menjalankan lebih dari 20 kueri eksternal secara bersamaan, dan hanya ada 20 pengguna default, satu atau beberapa kueri mungkin gagal.

  • Memori tidak cukup tersedia untuk memproses tugas R. Kesalahan ini paling sering terjadi di lingkungan default, di mana SQL Server mungkin menggunakan hingga 70 persen sumber daya komputer. Untuk informasi tentang cara memodifikasi konfigurasi server untuk mendukung penggunaan sumber daya yang lebih besar oleh R, lihat Mengoperasionalkan kode R Anda.

"Tidak dapat menemukan paket"

Jika Anda menjalankan kode R di SQL Server dan mendapatkan pesan ini, tetapi tidak mendapatkan pesan saat Anda menjalankan kode yang sama di luar SQL Server, itu berarti bahwa paket tidak diinstal ke lokasi pustaka default yang digunakan oleh SQL Server.

Kesalahan ini dapat terjadi dalam banyak cara:

  • Anda menginstal paket baru di server, tetapi akses ditolak, jadi R menginstal paket ke pustaka pengguna.

  • Anda menginstal R Services lalu menginstal alat R atau sekumpulan pustaka lain, seperti RStudio.

Untuk menentukan lokasi pustaka paket R yang digunakan oleh instans, buka SQL Server Management Studio (atau alat kueri database lainnya), sambungkan ke instans, lalu jalankan prosedur tersimpan berikut:

EXEC sp_execute_external_script @language = N'R',  
@script = N' print(normalizePath(R.home())); print(.libPaths());'; 

Hasil sampel

Pesan STDOUT dari skrip eksternal:

[1] "C:\Program Files\Microsoft SQL Server\MSSQL13. SQL2016\R_SERVICES"

[1] "C:/Program Files/Microsoft SQL Server/MSSQL13. SQL2016/R_SERVICES/library"

Untuk mengatasi masalah ini, Anda harus menginstal ulang paket ke pustaka instans SQL Server.

Catatan

Jika Anda telah meningkatkan instans SQL Server 2016 untuk menggunakan microsoft R versi terbaru, lokasi pustaka default berbeda. Untuk informasi selengkapnya, lihat Lokasi pustaka R default.

Launchpad dimatikan karena DLL yang tidak cocok

Jika Anda menginstal mesin database dengan fitur lain, patch server, lalu kemudian menambahkan fitur Pembelajaran Mesin dengan menggunakan media asli, versi komponen Pembelajaran Mesin yang salah mungkin diinstal. Saat Launchpad mendeteksi ketidakcocokan versi, Launchpad akan mematikan dan membuat file cadangan.

Untuk menghindari masalah ini, pastikan untuk menginstal fitur baru pada tingkat patch yang sama dengan instans server.

Cara yang salah untuk meningkatkan:

  1. Instal SQL Server 2016 tanpa Layanan R.
  2. Tingkatkan SQL Server 2016 Pembaruan Kumulatif 2.
  3. Instal R Services (Dalam Database) dengan menggunakan media RTM.

Cara yang benar untuk meningkatkan:

  1. Instal SQL Server 2016 tanpa Layanan R.
  2. Tingkatkan SQL Server 2016 ke tingkat patch yang diinginkan. Misalnya, instal Paket Layanan 1 lalu Pembaruan Kumulatif 2.
  3. Untuk menambahkan fitur pada tingkat patch yang benar, jalankan penyetelan SP1 dan CU2 lagi, lalu pilih Layanan R (Dalam Database).

Launchpad gagal dimulai jika notasi 8dot3 diperlukan

Catatan

Pada sistem yang lebih lama, Launchpad dapat gagal dimulai jika ada persyaratan notasi 8dot3. Persyaratan ini telah dihapus dalam rilis selanjutnya. SQL Server 2016 R Services pelanggan harus menginstal salah satu hal berikut:

Untuk kompatibilitas dengan R, SQL Server 2016 R Services (Dalam Database) memerlukan drive tempat fitur diinstal untuk mendukung pembuatan nama file pendek dengan menggunakan notasi 8dot3. Nama file 8.3 juga disebut nama file pendek, dan digunakan untuk kompatibilitas dengan versi Microsoft Windows yang lebih lama atau sebagai alternatif untuk nama file panjang.

Jika volume tempat Anda menginstal R tidak mendukung nama file pendek, proses yang meluncurkan R dari SQL Server mungkin tidak dapat menemukan executable yang benar, dan Launchpad tidak akan dimulai.

Sebagai solusinya, Anda dapat mengaktifkan notasi 8dot3 pada volume tempat SQL Server diinstal dan tempat Layanan R diinstal. Anda kemudian harus memberikan nama pendek untuk direktori kerja dalam file konfigurasi Layanan R.

  1. Untuk mengaktifkan notasi 8dot3, jalankan utilitas fsutil dengan argumen 8dot3name seperti yang dijelaskan di sini: fsutil 8dot3name.

  2. Setelah notasi 8dot3 diaktifkan, buka file RLauncher.config dan catat properti .WORKING_DIRECTORY Untuk informasi tentang cara menemukan file ini, lihat Pengumpulan data untuk pemecahan masalah Azure Machine Learning.

  3. Gunakan utilitas fsutil dengan argumen file untuk menentukan jalur file singkat untuk folder yang ditentukan dalam WORKING_DIRECTORY.

  4. Edit file konfigurasi untuk menentukan direktori kerja yang sama dengan yang Anda masukkan di properti WORKING_DIRECTORY. Atau, Anda dapat menentukan direktori kerja yang berbeda dan memilih jalur yang sudah ada yang sudah kompatibel dengan notasi 8dot3.

Langkah berikutnya

Pengumpulan data untuk pemecahan masalah pembelajaran mesin

Menginstal SQL Server Machine Learning Services

Memecahkan masalah koneksi mesin database