Sdílet prostřednictvím


Řešení potíží se službou Launchpad, která spouští skripty Pythonu a R ve službě SQL Server Machine Learning Services

platí pro: SQL Server 2016 (13.x) a novější verze

Tento článek obsahuje pokyny k řešení potíží souvisejících se službou SQL Server Launchpad používanou se službou Machine Learning Services. Služba Launchpad podporuje spouštění externích skriptů pro R a Python. Několik problémů může zabránit spuštění launchpadu, včetně problémů s konfigurací nebo změn nebo chybějících síťových protokolů.

Určení, jestli je launchpad spuštěný

  1. Otevřete SQL Server Configuration Manager. Z příkazového řádku zadejte SQLServerManager13.msc, SQLServerManager14.msc nebo SQLServerManager15.msc.

  2. Poznamenejte si účet služby, pod kterým je spuštěný Launchpad. Každá instance, kde je povolený jazyk R nebo Python, by měla mít vlastní instanci služby Launchpad. Například služba pro pojmenovanou instanci může být něco jako MSSQLLaunchpad$InstanceName.

  3. Pokud je služba zastavená, restartujte ji. Pokud při restartování dojde k problémům s konfigurací, publikuje se v protokolu událostí systému zpráva a služba se znovu zastaví. V protokolu událostí systému najdete podrobnosti o tom, proč se služba zastavila.

  4. Zkontrolujte obsah RSetup.log a ujistěte se, že v instalačním programu nejsou žádné chyby. Například zpráva Ukončení s kódem 0 značí selhání služby, která se má spustit.

  5. Pokud chcete vyhledat další chyby, projděte si obsah rlauncher.log.

Kontrola účtu služby Launchpad

Výchozí účet služby může být NT Service$SQL2016, NT Service$SQL2017 nebo NT Service$SQL2019. Poslední část se může lišit v závislosti na názvu instance SQL.

Služba Launchpad (Launchpad.exe) běží pomocí účtu služby s nízkými oprávněními. Pokud ale chcete spustit R a Python a komunikovat s instancí databáze, účet služby Launchpad vyžaduje následující uživatelská práva:

  • Přihlášení jako služba (SeServiceLogonRight)
  • Výměna tokenu na úrovni procesu (SeAssignPrimaryTokenPrivilege)
  • Obcházení kontroly průchodu (SeChangeNotifyPrivilege)
  • Úprava kvót paměti pro proces (SeIncreaseQuotaSizePrivilege)

Informace o těchto uživatelských právech naleznete v části „Oprávnění a práva systému Windows“ v dokumentu Konfigurace účtů služeb a oprávnění systému Windows.

Návod

Pokud znáte nástroj SDP (Support Diagnostics Platform) pro diagnostiku SQL Serveru, můžete pomocí protokolu SDP zkontrolovat výstupní soubor s názvem MachineName_UserRights.txt.

Skupina uživatelů pro Launchpad se nemůže přihlásit místně

Během instalace služby Machine Learning Services SQL Server vytvoří skupinu uživatelů systému Windows SQLRUserGroup a pak ji zřídí se všemi právy potřebnými pro připojení k SQL Serveru a spuštění externích skriptových úloh. Pokud je tato skupina uživatelů povolená, používá se také ke spouštění skriptů Pythonu.

V organizacích, kde se uplatňují přísnější zásady zabezpečení, mohla být práva požadovaná touto skupinou buď ručně odebraná, nebo automaticky zrušena na základě zásad. Pokud byla práva odebrána, Launchpad se už nemůže připojit k SQL Serveru a SQL Server nemůže volat externí runtime.

Chcete-li problém vyřešit, ujistěte se, že skupina SQLRUserGroup má systém právo Povolit přihlášení místně.

Další informace naleznete v tématu Konfigurace účtů služeb systému Windows a oprávnění.

Oprávnění ke spouštění externích skriptů

I když je launchpad správně nakonfigurovaný, vrátí chybu, pokud uživatel nemá oprávnění ke spouštění skriptů jazyka R nebo Python.

Pokud jste SQL Server nainstalovali jako správce databáze nebo jste vlastníkem databáze, máte toto oprávnění automaticky udělené. Jiní uživatelé ale obvykle mají omezenější oprávnění. Pokud se pokusí spustit skript jazyka R, zobrazí se jim chyba launchpadu.

Pokud chcete tento problém vyřešit, může správce zabezpečení v aplikaci SQL Server Management Studio upravit přihlašovací účet SQL nebo uživatelský účet systému Windows spuštěním následujícího skriptu:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO <username>

Další informace naleznete v tématu GRANT (Transact-SQL.

Běžné chyby launchpadu

Tato část obsahuje seznam nejběžnějších chybových zpráv, které Launchpad vrací.

Nejde spustit modul runtime pro skript jazyka R

Pokud se skupina Windows pro uživatele R (používá se také pro Python) nemůže přihlásit k instanci, na které běží služby R Services, může se zobrazit následující chyby:

  • Chyby vygenerované při pokusu o spuštění skriptů jazyka R:

    • Nelze spustit modul runtime pro skript R. Zkontrolujte konfiguraci prostředí runtime R.

    • Došlo k chybě externího skriptu. Modul runtime nelze spustit.

  • Chyby vygenerované službou SQL Server Launchpad:

    • Inicializace spouštěcího RLauncher.dllse nezdařila.

    • Nebyly zaregistrovány žádné spouštěcí knihovny DLL!

    • Protokoly zabezpečení označují, že účet NT SERVICE se nemohl přihlásit

Informace o tom, jak této skupině uživatelů udělit potřebná oprávnění, naleznete v tématu Instalace služby SQL Server R Services.

Poznámka:

Toto omezení neplatí, pokud ke spouštění skriptů R ze vzdálené pracovní stanice používáte přihlášení SQL.

Chyba přihlášení: Uživateli nebyl udělen požadovaný typ přihlášení.

Ve výchozím nastavení sql Server Launchpad používá při spuštění následující účet: NT Service\MSSQLLaunchpad. Účet je nakonfigurován nastavením SQL Serveru tak, aby měl všechna potřebná oprávnění.

Pokud přiřadíte k Launchpadu jiný účet nebo pokud zásada na počítači se SQL Serverem odstraní určitá oprávnění, účet nemusí mít potřebná oprávnění a může se zobrazit tato chyba:

ERROR_LOGON_TYPE_NOT_GRANTED 1385 (0x569) Chyba přihlášení: Uživateli nebyl udělen požadovaný typ přihlášení v tomto počítači.

Pokud chcete udělit potřebná oprávnění k novému účtu služby, použijte aplikaci Místní zásady zabezpečení a aktualizujte oprávnění k účtu tak, aby zahrnovala následující oprávnění:

  • Úprava limitů paměti pro proces (SeIncreaseQuotaPrivilege)
  • Obcházení kontroly průchodu (SeChangeNotifyPrivilege)
  • Přihlášení jako služba (SeServiceLogonRight)
  • Výměna tokenu na úrovni procesu (SeAssignPrimaryTokenPrivilege)

"Nejde komunikovat se službou Launchpad"

Pokud jste nainstalovali a povolili strojové učení, ale při pokusu o spuštění skriptu R nebo Pythonu se tato chyba zobrazí, může se stát, že služba Launchpad pro instanci přestala běžet.

  1. Z příkazového řádku systému Windows otevřete nástroj SQL Server Configuration Manager. Další informace naleznete v tématu SQL Server Configuration Manager.

  2. Klepněte pravým tlačítkem myši SQL Server Launchpad instance a pak vyberte Vlastnosti.

  3. Vyberte kartu Služba a ověřte, že je služba spuštěná. Pokud není spuštěný, změňte režim spuštění na Automatický a pak vyberte Použít.

  4. Restartování služby obvykle řeší problém, aby se skripty strojového učení mohly spustit. Pokud restartování problém nevyřeší, poznamenejte si cestu a argumenty ve vlastnosti Binární cesta a postupujte takto:

    a. Zkontrolujte soubor .config spouštěče a ujistěte se, že je pracovní adresář platný.

    b) Ujistěte se, že se skupina Windows, kterou používá Launchpad, může připojit k instanci SQL Serveru.

    c) Pokud změníte některou z vlastností služby, restartujte službu Launchpad.

Závažná chyba: vytvoření souboru tmpFile selhalo.

V tomto scénáři jste úspěšně nainstalovali funkce strojového učení a launchpad běží. Pokusíte se spustit jednoduchý kód jazyka R nebo Python, ale Launchpad selže s chybou, jako je následující:

Nelze komunikovat s modulem runtime pro skript jazyka R. Zkontrolujte požadavky běhového prostředí jazyka R.

Modul runtime externího skriptu současně zapíše následující zprávu jako součást zprávy STDERR:

Závažná chyba: Vytvoření souboru tmpfile se nezdařilo.

Tato chyba značí, že účet, který se launchpad pokouší použít, nemá oprávnění k přihlášení k databázi. K této situaci může dojít při implementaci striktních zásad zabezpečení. Pokud chcete zjistit, jestli se jedná o tento případ, zkontrolujte protokoly SQL Serveru a zkontrolujte, jestli MSSQLSERVER01 účet byl při přihlášení odepřen. Stejné informace jsou uvedené v protokolech, které jsou specifické pro R_SERVICES nebo PYTHON_SERVICES. Vyhledejte ExtLaunchError.log.

Ve výchozím nastavení se nastavuje a přidružuje k procesu Launchpad.exe 20 účtů s názvy MSSQLSERVER01 prostřednictvím MSSQLSERVER20. Pokud hodně využíváte R nebo Python, můžete zvýšit počet účtů.

Pokud chcete tento problém vyřešit, ujistěte se, že skupina má oprávnění Povolit místní přihlášení k místní instanci, ve které jsou nainstalované a povolené funkce strojového učení. V některých prostředích může tato úroveň oprávnění vyžadovat výjimku GPO (objekt zásad skupiny) od správce sítě.

Nedostatek kvóty pro zpracování tohoto příkazu

Tato chyba může znamenat jednu z několika věcí:

  • Launchpad může mít nedostatek externích uživatelů ke spuštění externího dotazu. Pokud například současně spouštíte více než 20 externích dotazů a existuje pouze 20 výchozích uživatelů, může selhat jeden nebo více dotazů.

  • Pro zpracování úlohy jazyka R není k dispozici dostatek paměti. K této chybě dochází nejčastěji ve výchozím prostředí, kde SQL Server může používat až 70 procent prostředků počítače. Informace o tom, jak upravit konfiguraci serveru tak, aby podporovala větší využití prostředků jazykem R, najdete v tématu Zprovoznění kódu jazyka R.

"Nelze najít balíček"

Pokud na SQL Serveru spustíte kód R a zobrazí se tato zpráva, ale při spuštění stejného kódu mimo SQL Server se nezobrazí, znamená to, že balíček nebyl nainstalován do výchozího umístění knihovny používaného SQL Serverem.

K této chybě může dojít mnoha způsoby:

  • Na server jste nainstalovali nový balíček, ale přístup byl odepřen, takže R nainstaloval balíček do uživatelské knihovny.

  • Nainstalovali jste službu R Services a pak jste nainstalovali jiný nástroj R nebo sadu knihoven, jako je například RStudio.

Pokud chcete určit umístění knihovny balíčků jazyka R používané instancí, otevřete aplikaci SQL Server Management Studio (nebo jakýkoli jiný nástroj pro dotaz databáze), připojte se k instanci a spusťte následující uloženou proceduru:

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

Ukázkové výsledky

Zprávy STDOUT z externího skriptu:

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

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

Pokud chcete tento problém vyřešit, musíte balíček přeinstalovat do knihovny instancí SQL Serveru.

Poznámka:

Pokud jste upgradovali instanci SQL Serveru 2016 tak, aby používala nejnovější verzi Microsoft R, výchozí umístění knihovny se liší. Další informace naleznete v tématu Výchozí umístění knihovny jazyka R.

Launchpad se vypne kvůli neshodě knihoven DLL

Pokud nainstalujete databázový stroj s jinými funkcemi, opravíte server a později přidáte funkci Machine Learning pomocí původního média, může být nainstalována nesprávná verze komponent Machine Learning. Když Launchpad zjistí neshodu verzí, ukončí svou činnost a vytvoří soubor s výpisem.

Abyste se tomuto problému vyhnuli, nezapomeňte nainstalovat všechny nové funkce na stejné úrovni oprav jako instance serveru.

Nesprávný způsob upgradu:

  1. Nainstalujte SQL Server 2016 bez R Services.
  2. Upgradujte kumulativní aktualizaci SQL Serveru 2016 2.
  3. Nainstalujte služby R (In-Database) pomocí média RTM.

Správný způsob upgradu:

  1. Nainstalujte SQL Server 2016 bez R Services.
  2. Upgradujte SQL Server 2016 na požadovanou úroveň opravy. Například nainstalujte aktualizaci Service Pack 1 a potom kumulativní aktualizaci 2.
  3. Pokud chcete přidat funkci na správnou úroveň oprav, spusťte znovu instalaci SP1 a CU2 a pak zvolte R Services (In-Database).

Spuštění launchpadu se nepovede, pokud je vyžadována notace 8dot3

Poznámka:

Ve starších systémech může Launchpad nefungovat správně, pokud je vyžadováno použití zápisu 8dot3. Tento požadavek byl v pozdějších verzích odebrán. Zákazníci se službami SQL Server 2016 R Services by měli nainstalovat jednu z následujících možností:

Kvůli kompatibilitě s R vyžadovala služba SQL Server 2016 R Services (In-Database) jednotku, ve které je funkce nainstalovaná, aby podporovala vytváření krátkých názvů souborů pomocí zápisu 8dot3. Název souboru 8.3 se také nazývá krátký název souboru a používá se pro kompatibilitu se staršími verzemi systému Microsoft Windows nebo jako alternativu k dlouhým názvům souborů.

Pokud svazek, na který instalujete R, nepodporuje krátké názvy souborů, nemusí být procesy, které spouštějí R z SQL Serveru, schopny najít správný spustitelný soubor a Launchpad se nespustí.

Alternativním řešením je povolit zápis 8dot3 na svazku, na kterém je nainstalovaný SQL Server a kde je nainstalována služba R Services. Potom je nutné zadat krátký název pracovního adresáře v konfiguračním souboru služby R Services.

  1. Pokud chcete povolit zápis 8dot3, spusťte nástroj fsutil s argumentem 8dot3name , jak je popsáno zde: fsutil 8dot3name.

  2. Po povolení způsobu zápisu 8dot3 otevřete soubor RLauncher.config a poznamenejte si vlastnost WORKING_DIRECTORY. Informace o tom, jak tento soubor najít, najdete v tématu Řešení potíží s shromažďováním dat pro Machine Learning.

  3. Pomocí nástroje fsutil s argumentem souboru zadejte krátkou cestu k souboru pro složku zadanou v WORKING_DIRECTORY.

  4. Upravte konfigurační soubor a určete stejný pracovní adresář, který jste zadali ve vlastnosti WORKING_DIRECTORY. Případně můžete zadat jiný pracovní adresář a zvolit existující cestu, která je již kompatibilní s notací 8dot3.

Další kroky

Shromažďování dat pro řešení potíží s strojovém učením

Instalace služby SQL Server Machine Learning Services

Řešení potíží s připojeními databázového stroje