Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Ten artykuł zawiera wskazówki dotyczące rozwiązywania problemów dotyczących usługi Launchpad programu SQL Server używanej z usługami Machine Learning Services. Usługa Launchpad obsługuje wykonywanie skryptów zewnętrznych dla języków R i Python. Wiele problemów może uniemożliwić uruchamianie programu Launchpad, w tym problemy z konfiguracją lub zmiany lub brakujące protokoły sieciowe.
Określanie, czy program Launchpad jest uruchomiony
Otwórz program SQL Server Configuration Manager. W wierszu polecenia wpisz SQLServerManager13.msc, SQLServerManager14.msc lub SQLServerManager15.msc.
Zanotuj konto usługi, na którym działa Launchpad. Każde wystąpienie, w którym włączono język R lub Python, powinno mieć własne wystąpienie usługi Launchpad. Na przykład usługa dla nazwanego wystąpienia może być podobna do MSSQLLaunchpad$InstanceName.
Jeśli usługa zostanie zatrzymana, uruchom ją ponownie. Po ponownym uruchomieniu, jeśli występują problemy z konfiguracją, komunikat zostanie opublikowany w dzienniku zdarzeń systemu, a usługa zostanie zatrzymana ponownie. Sprawdź dziennik zdarzeń systemu, aby uzyskać szczegółowe informacje o tym, dlaczego usługa została zatrzymana.
Przejrzyj zawartość RSetup.log i upewnij się, że w konfiguracji nie ma żadnych błędów. Na przykład komunikat Exiting with code 0 (Zamykanie z kodem 0 ) wskazuje niepowodzenie uruchomienia usługi.
Aby wyszukać inne błędy, przejrzyj zawartość rlauncher.log.
Sprawdzanie konta usługi Launchpad
Domyślne konto usługi może mieć wartość "NT Service$SQL2016", "NT Service$SQL2017" lub "NT Service$SQL2019". Ostatnia część może się różnić w zależności od nazwy wystąpienia SQL.
Usługa Launchpad (Launchpad.exe) jest uruchamiana przy użyciu konta usługi o niskim poziomie uprawnień. Jednak aby uruchomić języki R i Python i komunikować się z wystąpieniem bazy danych, konto usługi Launchpad wymaga następujących praw użytkownika.
- Logowanie do systemu jako usługa (SeServiceLogonRight)
- Zamień token poziomu procesu (SeAssignPrimaryTokenPrivilege)
- Obejście sprawdzania powiadomień o zmianach (SeChangeNotifyPrivilege)
- Dostosuj przydział pamięci dla procesu (SeIncreaseQuotaSizePrivilege)
Aby uzyskać informacje o tych prawach użytkownika, zobacz sekcję "Uprawnienia i prawa systemu Windows" w temacie Konfigurowanie kont i uprawnień usługi systemu Windows.
Wskazówka
Jeśli znasz korzystanie z narzędzia Platformy diagnostyki pomocy technicznej (SDP) do diagnostyki programu SQL Server, możesz użyć protokołu SDP, aby przejrzeć plik wyjściowy o nazwie MachineName_UserRights.txt.
Grupa użytkowników programu Launchpad nie może zalogować się lokalnie
Podczas konfigurowania usług Machine Learning Services, SQL Server tworzy grupę użytkowników systemu Windows SQLRUserGroup, a następnie przyznaje jej wszystkie prawa niezbędne do nawiązania połączenia z SQL Server i uruchamiania zewnętrznych zadań skryptowych. Jeśli ta grupa użytkowników jest włączona, jest ona również używana do wykonywania skryptów języka Python.
Jednak w organizacjach, w których wymuszane są bardziej restrykcyjne zasady bezpieczeństwa, prawa wymagane przez tę grupę mogą zostać ręcznie usunięte lub automatycznie cofnięte na mocy polityki. Jeśli prawa zostały usunięte, launchpad nie może już nawiązać połączenia z programem SQL Server, a program SQL Server nie może wywołać zewnętrznego środowiska uruchomieniowego.
Aby rozwiązać ten problem, upewnij się, że grupa SQLRUserGroup ma prawo systemowe Zezwalaj na logowanie lokalne.
Aby uzyskać więcej informacji, zobacz Konfigurowanie kont usług Windows i uprawnień.
Uprawnienia do uruchamiania skryptów zewnętrznych
Nawet jeśli narzędzie Launchpad jest poprawnie skonfigurowane, zwraca błąd, jeśli użytkownik nie ma uprawnień do uruchamiania skryptów języka R lub Python.
Jeśli program SQL Server został zainstalowany jako administrator bazy danych lub jesteś właścicielem bazy danych, automatycznie otrzymujesz to uprawnienie. Jednak inni użytkownicy zwykle mają bardziej ograniczone uprawnienia. Jeśli spróbują uruchomić skrypt języka R, wystąpi błąd launchpadu.
Aby rozwiązać ten problem, w programie SQL Server Management Studio administrator zabezpieczeń może zmodyfikować identyfikator logowania SQL lub konto użytkownika systemu Windows, uruchamiając następujący skrypt:
GRANT EXECUTE ANY EXTERNAL SCRIPT TO <username>
Aby uzyskać więcej informacji, zobacz GRANT (Transact-SQL).
Typowe błędy programu Launchpad
W tej sekcji wymieniono najbardziej typowe komunikaty o błędach zwracane przez program Launchpad.
"Nie można uruchomić środowiska uruchomieniowego dla skryptu języka R"
Jeśli grupa systemu Windows dla użytkowników języka R (używana również dla języka Python) nie może zalogować się do wystąpienia, na którym są uruchomione usługi języka R, mogą wystąpić następujące błędy:
Błędy generowane podczas próby uruchomienia skryptów języka R:
Nie można uruchomić środowiska wykonawczego dla skryptu "R". Sprawdź konfigurację środowiska uruchomieniowego "R".
Wystąpił błąd skryptu zewnętrznego. Nie można uruchomić środowiska uruchomieniowego.
Błędy generowane przez usługę Launchpad programu SQL Server:
Nie udało się zainicjować uruchamiania RLauncher.dll
Nie zarejestrowano żadnych plików dll uruchamiających!
Dzienniki zabezpieczeń wskazują, że konto NT SERVICE nie mogło się zalogować
Aby uzyskać informacje o sposobie udzielania tej grupie użytkowników niezbędnych uprawnień, zobacz Instalowanie usług R programu SQL Server.
Uwaga / Notatka
To ograniczenie nie ma zastosowania, jeśli używasz identyfikatorów logowania SQL do uruchamiania skryptów języka R ze zdalnej stacji roboczej.
"Niepowodzenie logowania: użytkownik nie otrzymał żądanego typu logowania"
Domyślnie program SQL Server Launchpad używa następującego konta podczas uruchamiania: NT Service\MSSQLLaunchpad. Konto jest konfigurowane przez instalatora programu SQL Server w celu posiadania wszystkich niezbędnych uprawnień.
Jeśli przypiszesz inne konto do programu Launchpad lub prawo zostanie usunięte przez zasady na maszynie z programem SQL Server, konto może nie mieć niezbędnych uprawnień i może zostać wyświetlony następujący błąd:
ERROR_LOGON_TYPE_NOT_GRANTED 1385 (0x569) Błąd logowania: użytkownik nie otrzymał żądanego typu logowania na tym komputerze.
Aby udzielić niezbędnych uprawnień do nowego konta usługi, użyj aplikacji Zasady zabezpieczeń lokalnych i zaktualizuj uprawnienia na koncie, aby uwzględnić następujące uprawnienia:
- Zarządzaj przydziałami pamięci dla procesu (SeIncreaseQuotaPrivilege)
- Obejście sprawdzania powiadomień o zmianach (SeChangeNotifyPrivilege)
- Logowanie do systemu jako usługa (SeServiceLogonRight)
- Zamień token poziomu procesu (SeAssignPrimaryTokenPrivilege)
"Nie można nawiązać komunikacji z usługą Launchpad"
Jeśli zainstalowano i włączono uczenie maszynowe, ale ten błąd występuje podczas próby uruchomienia skryptu języka R lub Python, usługa Launchpad dla wystąpienia mogła przestać działać.
W wierszu polecenia systemu Windows otwórz menedżera konfiguracji programu SQL Server. Aby uzyskać więcej informacji, zobacz SQL Server Configuration Manager.
Kliknij prawym przyciskiem myszy ikonę SQL Server Launchpad dla danej instancji, a następnie wybierz polecenie Właściwości.
Wybierz kartę Usługa , a następnie sprawdź, czy usługa jest uruchomiona. Jeśli nie jest uruchomiony, zmień tryb uruchamiania na Automatyczny, a następnie wybierz pozycję Zastosuj.
Ponowne uruchomienie usługi zwykle rozwiązuje problem, aby można było uruchamiać skrypty uczenia maszynowego. Jeśli ponowne uruchomienie nie rozwiąże problemu, zanotuj ścieżkę i argumenty we właściwości Ścieżka binarna i wykonaj następujące czynności:
a. Przejrzyj plik .config modułu uruchamiania i upewnij się, że katalog roboczy jest prawidłowy.
b. Upewnij się, że grupa systemu Windows używana przez narzędzie Launchpad może nawiązać połączenie z wystąpieniem programu SQL Server.
c. Jeśli zmienisz dowolną z właściwości usługi, uruchom ponownie usługę Launchpad.
"Błąd krytyczny: tworzenie pliku tmpFile nie powiodło się"
W tym scenariuszu pomyślnie zainstalowano funkcje uczenia maszynowego, a platforma Launchpad jest uruchomiona. Spróbujesz uruchomić prosty kod języka R lub Python, ale program Launchpad kończy się niepowodzeniem z powodu błędu podobnego do następującego:
Nie można nawiązać komunikacji ze środowiskiem uruchomieniowym skryptu języka R. Sprawdź wymagania środowiska uruchomieniowego języka R.
Jednocześnie środowisko uruchomieniowe skryptu zewnętrznego zapisuje następujący komunikat w ramach komunikatu STDERR:
Błąd krytyczny: tworzenie pliku tmpfile nie powiodło się.
Ten błąd wskazuje, że konto, którego program Launchpad próbuje użyć, nie ma uprawnień do logowania się do bazy danych. Taka sytuacja może wystąpić w przypadku zaimplementowania rygorystycznych zasad zabezpieczeń. Aby ustalić, czy tak jest, przejrzyj dzienniki programu SQL Server i sprawdź, czy konto MSSQLSERVER01 zostało odrzucone podczas logowania. Te same informacje znajdują się w dziennikach specyficznych dla R_SERVICES lub PYTHON_SERVICES. Poszukaj ExtLaunchError.log.
Domyślnie konfigurowane jest 20 kont, które są skojarzone z procesem Launchpad.exe, z nazwami MSSQLSERVER01 do MSSQLSERVER20. Jeśli korzystasz z języka R lub Python, możesz zwiększyć liczbę kont.
Aby rozwiązać ten problem, upewnij się, że grupa ma uprawnienia Zezwalaj na logowanie lokalne do lokalnego wystąpienia, w którym zainstalowano i włączono funkcje uczenia maszynowego. W niektórych środowiskach ten poziom uprawnień może wymagać wyjątku zasady grupy od administratora sieci.
Niewystarczająca ilość przydziału, aby przetworzyć to polecenie
Ten błąd może oznaczać jedną z kilku rzeczy:
Launchpad może mieć niewystarczające użytkowników zewnętrznych do uruchomienia zapytania zewnętrznego. Jeśli na przykład uruchamiasz więcej niż 20 zapytań zewnętrznych jednocześnie i istnieje tylko 20 użytkowników domyślnych, co najmniej jedno zapytanie może zakończyć się niepowodzeniem.
Za mało pamięci jest dostępna do przetworzenia zadania języka R. Ten błąd występuje najczęściej w środowisku domyślnym, w którym program SQL Server może używać do 70 procent zasobów komputera. Aby uzyskać informacje na temat modyfikowania konfiguracji serwera w celu obsługi większego wykorzystania zasobów przez język R, zobacz Operacjonalizacja kodu języka R.
"Nie można odnaleźć pakietu"
Jeśli uruchomisz kod języka R w programie SQL Server i zostanie wyświetlony ten komunikat, ale nie został wyświetlony komunikat podczas uruchamiania tego samego kodu poza programem SQL Server, oznacza to, że pakiet nie został zainstalowany w domyślnej lokalizacji biblioteki używanej przez program SQL Server.
Ten błąd może wystąpić na wiele sposobów:
Na serwerze zainstalowano nowy pakiet, ale nastąpiła odmowa dostępu, dlatego język R zainstalował pakiet w bibliotece użytkownika.
Zainstalowano usługi języka R, a następnie zainstalowano inne narzędzie języka R lub zestaw bibliotek, takich jak RStudio.
Aby określić lokalizację biblioteki pakietów języka R używanej przez wystąpienie, otwórz program SQL Server Management Studio (lub inne narzędzie zapytań bazy danych), połącz się z wystąpieniem, a następnie uruchom następującą procedurę składowaną:
EXEC sp_execute_external_script @language = N'R',
@script = N' print(normalizePath(R.home())); print(.libPaths());';
Przykładowe wyniki
Komunikaty STDOUT ze skryptu zewnętrznego:
[1] "C:\Program Files\Microsoft SQL Server\MSSQL13. SQL2016\R_SERVICES"
[1] "C:/Program Files/Microsoft SQL Server/MSSQL13. SQL2016/R_SERVICES/biblioteka"
Aby rozwiązać ten problem, należy ponownie zainstalować pakiet w bibliotece wystąpień programu SQL Server.
Uwaga / Notatka
Jeśli uaktualniono wystąpienie programu SQL Server 2016 do korzystania z najnowszej wersji języka Microsoft R, domyślna lokalizacja biblioteki jest inna. Aby uzyskać więcej informacji, zobacz Domyślna lokalizacja biblioteki języka R.
Launchpad jest zamykany z powodu niezgodności bibliotek DLL
Jeśli zainstalujesz aparat bazy danych z innymi funkcjami, popraw serwer, a następnie dodasz funkcję uczenia maszynowego przy użyciu oryginalnego nośnika, może zostać zainstalowana niewłaściwa wersja składników usługi Machine Learning. Gdy program Launchpad wykryje niezgodność wersji, zamyka i tworzy plik zrzutu.
Aby uniknąć tego problemu, należy zainstalować wszystkie nowe funkcje na tym samym poziomie poprawek co wystąpienie serwera.
Niewłaściwy sposób uaktualniania:
- Zainstaluj program SQL Server 2016 bez usług języka R.
- Uaktualnij aktualizację zbiorczą programu SQL Server 2016.
- Zainstaluj usługi języka R (In-Database) przy użyciu nośnika RTM.
Prawidłowy sposób uaktualniania:
- Zainstaluj program SQL Server 2016 bez usług języka R.
- Uaktualnij program SQL Server 2016 do żądanego poziomu poprawek. Na przykład zainstaluj dodatek Service Pack 1, a następnie aktualizację zbiorczą 2.
- Aby dodać funkcję na poprawnym poziomie poprawek, uruchom ponownie instalację SP1 i CU2, a następnie wybierz pozycję Usługi języka R (In-Database).
Nie można uruchomić programu Launchpad, jeśli wymagana jest notacja 8dot3
Uwaga / Notatka
W starszych systemach uruchomienie programu Launchpad może zakończyć się niepowodzeniem, jeśli istnieje wymaganie notacji 8dot3. To wymaganie zostało usunięte w kolejnych wersjach. Klienci usług SQL Server 2016 R Services powinni zainstalować jedną z następujących opcji:
- SQL Server 2016 SP1 i CU1: zbiorcza aktualizacja 1 dla programu SQL Server 2016 SP1.
- SQL Server 2016 RTM, aktualizacja zbiorcza 3 oraz ta poprawka, która jest dostępna na żądanie.
Aby zapewnić zgodność z językiem R, usługi SQL Server 2016 R (In-Database) wymagały dysku, na którym zainstalowano funkcję w celu obsługi tworzenia krótkich nazw plików przy użyciu notacji 8dot3. Nazwa pliku 8.3 jest również nazywana krótką nazwą pliku i jest używana do zapewnienia zgodności z wcześniejszymi wersjami systemu Microsoft Windows lub alternatywą dla długich nazw plików.
Jeśli wolumin, na którym instalujesz język R, nie obsługuje krótkich nazw plików, procesy uruchamiające język R z programu SQL Server mogą nie być w stanie zlokalizować poprawnego pliku wykonywalnego, a launchpad nie zostanie uruchomiony.
Aby obejść ten problem, można włączyć notację 8dot3 na woluminie, na którym jest zainstalowany program SQL Server i gdzie są zainstalowane usługi języka R. Następnie należy podać krótką nazwę katalogu roboczego w pliku konfiguracji usług języka R.
Aby włączyć notację 8dot3, uruchom narzędzie fsutil z argumentem 8dot3name zgodnie z opisem tutaj: fsutil 8dot3name.
Po włączeniu notacji 8dot3 otwórz plik RLauncher.config i zanotuj właściwość
WORKING_DIRECTORY. Aby uzyskać informacje na temat znajdowania tego pliku, zobacz Zbieranie danych na potrzeby rozwiązywania problemów z usługą Machine Learning.Użyj narzędzia fsutil z argumentem pliku , aby określić krótką ścieżkę pliku dla folderu określonego w WORKING_DIRECTORY.
Edytuj plik konfiguracji, aby określić ten sam katalog roboczy, który został wprowadzony we właściwości WORKING_DIRECTORY. Alternatywnie możesz określić inny katalog roboczy i wybrać istniejącą ścieżkę, która jest już zgodna z notacją 8dot3.
Dalsze kroki
Zbieranie danych na potrzeby rozwiązywania problemów z uczeniem maszynowym