Partilhar via


Solucionar problemas com o serviço Launchpad executando scripts Python e R nos Serviços de Aprendizado de Máquina do SQL Server

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores

Este artigo fornece diretrizes de solução de problemas para problemas envolvendo o serviço Barra Inicial do SQL Server usado com os Serviços de Aprendizado de Máquina. O serviço Launchpad suporta a execução de scripts externos para R e Python. Vários problemas podem impedir que a Barra Inicial seja iniciada, incluindo problemas de configuração ou alterações, ou protocolos de rede ausentes.

Determinar se o Launchpad está em execução

  1. Abra SQL Server Configuration Manager. Na linha de comando, digite SQLServerManager13.msc, SQLServerManager14.msc ou SQLServerManager15.msc.

  2. Anote a conta de serviço na qual o Launchpad está sendo executado. Cada instância em que R ou Python está habilitado deve ter sua própria instância do serviço Launchpad. Por exemplo, o serviço para uma instância nomeada pode ser algo como MSSQLLaunchpad$InstanceName.

  3. Se o serviço for interrompido, reinicie-o. Ao reiniciar, se houver algum problema com a configuração, uma mensagem será publicada no log de eventos do sistema e o serviço será interrompido novamente. Verifique o log de eventos do sistema para obter detalhes sobre por que o serviço parou.

  4. Revise o conteúdo do RSetup.log e certifique-se de que não há erros na configuração. Por exemplo, a mensagem Conclusão com o código 0 indica falha no início do serviço.

  5. Para procurar outros erros, reveja o conteúdo de rlauncher.log.

Verifique a conta de serviço do Launchpad

A conta de serviço padrão pode ser "NT Service$SQL2016", "NT Service$SQL2017" ou "NT Service$SQL2019". A parte final pode variar, dependendo do nome da instância SQL.

O serviço Launchpad (Launchpad.exe) é executado usando uma conta de serviço de baixo privilégio. No entanto, para iniciar R e Python e se comunicar com a instância do banco de dados, a conta de serviço Launchpad requer os seguintes direitos de usuário:

  • Iniciar sessão como serviço (SeServiceLogonRight)
  • Substitua um token no nível do processo (SeAssignPrimaryTokenPrivilege)
  • Ignorar verificação transversal (SeChangeNotifyPrivilege)
  • Ajustar cotas de memória para um processo (SeIncreaseQuotaSizePrivilege)

Para obter informações sobre esses direitos de usuário, consulte a seção "Privilégios e direitos do Windows" em Configurar contas de serviço e permissões do Windows.

Sugestão

Se estiver familiarizado com a utilização da ferramenta Support Detects Platform (SDP) para diagnósticos SQL Server, pode usar o SDP para rever o ficheiro de saída com o nome MachineName_UserRights.txt.

O grupo de utilizadores do Launchpad não consegue iniciar sessão localmente

Durante a instalação dos Serviços de Aprendizado de Máquina, o SQL Server cria o grupo de usuários do Windows SQLRUserGroup e, em seguida, provisiona-o com todos os direitos necessários para que a Barra Inicial se conecte ao SQL Server e execute trabalhos de script externos. Se este grupo de utilizadores estiver ativado, também é usado para executar scripts em Python.

No entanto, em organizações onde políticas de segurança mais restritivas são aplicadas, os direitos exigidos por esse grupo podem ter sido removidos manualmente ou podem ser automaticamente revogados pela política. Se os direitos forem removidos, o Launchpad já não pode ligar-se ao SQL Server e o SQL Server não pode chamar o runtime externo.

Para corrigir o problema, certifique-se de que o grupo SQLRUserGroup tem o sistema certo Permitir logon localmente.

Para obter mais informações, consulte Configurar contas de serviço e permissões do Windows.

Permissões para executar scripts externos

Mesmo que o Launchpad esteja configurado corretamente, devolve um erro se o utilizador não tiver permissão para executar scripts em R ou Python.

Se instalaste o SQL Server como administrador de bases de dados ou és proprietário de uma base de dados, esta permissão é automaticamente concedida. No entanto, outros usuários geralmente têm permissões mais limitadas. Se tentarem executar um script R, obterão um erro na Barra Inicial.

Para corrigir o problema, no SQL Server Management Studio, um administrador de segurança pode modificar o logon do SQL ou a conta de usuário do Windows executando o seguinte script:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO <username>

Para obter mais informações, consulte GRANT.

Erros comuns do Launchpad

Esta seção lista as mensagens de erro mais comuns que a Barra Inicial retorna.

"Não é possível iniciar o tempo de execução para o script R"

Se o grupo Windows para utilizadores R (também usado para Python) não conseguir iniciar sessão na instância que está a executar os Serviços R, poderá ver os seguintes erros:

  • Erros gerados quando você tenta executar scripts R:

    • Não é possível iniciar o runtime de execução para o script 'R'. Por favor, verifique a configuração do runtime 'R'.

    • Ocorreu um erro de script externo. Não é possível iniciar o ambiente de execução.

  • Erros gerados pelo serviço Launchpad do SQL Server:

    • Falha ao inicializar o iniciador RLauncher.dll

    • Nenhum DLL de lançamento foi registado!

    • Os logs de segurança indicam que a conta NT SERVICE não pôde fazer logon

Para informações sobre como conceder a este grupo de utilizadores as permissões necessárias, consulte Instalar SQL Server 2016 R Services.

Observação

Esta limitação não se aplica se usar logins SQL para executar scripts R a partir de uma estação de trabalho remota.

"Falha de logon: o usuário não recebeu o tipo de logon solicitado"

Por padrão, a Barra Inicial do SQL Server usa a seguinte conta na inicialização: NT Service\MSSQLLaunchpad. A conta é configurada pela instalação do SQL Server para ter todas as permissões necessárias.

Se você atribuir uma conta diferente à Barra Inicial ou se o direito for removido por uma política na máquina do SQL Server, a conta pode não ter as permissões necessárias e você poderá ver este erro:

ERROR_LOGON_TYPE_NOT_GRANTED 1385 (0x569) Falha de início de sessão: o utilizador não recebeu o tipo de início de sessão solicitado neste computador.

Para conceder as permissões necessárias à nova conta de serviço, use o aplicativo Diretiva de Segurança Local e atualize as permissões na conta para incluir as seguintes permissões:

  • Ajustar as cotas de memória para um processo específico (SeIncreaseQuotaPrivilege)
  • Ignorar verificação transversal (SeChangeNotifyPrivilege)
  • Iniciar sessão como serviço (SeServiceLogonRight)
  • Substitua um token no nível do processo (SeAssignPrimaryTokenPrivilege)

"Não é possível comunicar com o serviço Launchpad"

Se você instalou e habilitou o aprendizado de máquina, mas recebe esse erro ao tentar executar um script R ou Python, o serviço Launchpad para a instância pode ter parado de ser executado.

  1. Em um prompt de comando do Windows, abra o SQL Server Configuration Manager. Para obter mais informações, consulte SQL Server Configuration Manager.

  2. Clique com o botão direito do mouse em Launchpad do SQL Server para a instância e selecione Propriedades.

  3. Selecione a guia Serviço e verifique se o serviço está em execução. Se não estiver a correr, altera o Modo Iniciar para Automático e depois seleciona Aplicar.

  4. Reiniciar o serviço geralmente corrige o problema para que os scripts de aprendizado de máquina possam ser executados. Se o reinício não resolver o problema, anote o caminho e os argumentos na propriedade Binary Path , e faça o seguinte:

    a) Revise o arquivo de .config do iniciador e verifique se o diretório de trabalho é válido.

    b) Verifique se o grupo do Windows usado pelo Launchpad possa conectar-se à instância do SQL Server.

    c. Se você alterar qualquer uma das propriedades do serviço, reinicie o serviço Launchpad.

"Falha na criação de tmpFile: erro fatal"

Nesse cenário, você instalou com êxito recursos de aprendizado de máquina e Launchpad está em execução. Você tenta executar algum código R ou Python simples, mas o Launchpad apresenta um erro como o seguinte:

Não é possível comunicar com o ambiente de execução para o script R. Verifique os requisitos do tempo de execução do R.

Ao mesmo tempo, o tempo de execução do script externo grava a seguinte mensagem como parte da mensagem STDERR:

Erro fatal: falha na criação do tmpfile.

Este erro indica que a conta que o Launchpad está a tentar usar não tem permissão para aceder à base de dados. Esta situação pode acontecer quando políticas de segurança rigorosas são implementadas. Para determinar se esse é o caso, revise os logs do SQL Server e verifique se a conta MSSQLSERVER01 foi negada no logon. As mesmas informações são fornecidas nos logs específicos para R_SERVICES ou PYTHON_SERVICES. Procure por ExtLaunchError.log

Por padrão, 20 contas são configuradas e associadas ao processo de Launchpad.exe, com os nomes MSSQLSERVER01 até MSSQLSERVER20. Se você fizer uso intenso de R ou Python, você pode aumentar o número de contas.

Para resolver o problema, verifique se o grupo tem permissões Permitir logon local para a instância local onde os recursos de aprendizado de máquina foram instalados e habilitados. Em alguns ambientes, esse nível de permissão pode exigir uma exceção de GPO do administrador de rede.

"Quota insuficiente para processar este comando"

Este erro pode significar uma de várias coisas:

  • A Plataforma de Lançamento pode ter utilizadores externos insuficientes para realizar uma consulta externa. Por exemplo, se estiver a executar mais de 20 consultas externas em simultâneo e houver apenas 20 utilizadores predefinidos, uma ou mais consultas podem falhar.

  • Memória insuficiente está disponível para processar a tarefa R. Esse erro acontece com mais frequência em um ambiente padrão, onde o SQL Server pode estar usando até 70% dos recursos do computador. Para obter informações sobre como modificar a configuração do servidor para permitir maior utilização de recursos pelo R, consulte Tutorial de Python: Implementar um modelo de regressão linear com aprendizagem automática em SQL.

"Não consigo encontrar o pacote"

Se executas código R no SQL Server e recebes esta mensagem, mas não recebeste a mensagem quando executaste o mesmo código fora do SQL Server, significa que o pacote não foi instalado na localização padrão da biblioteca usada pelo SQL Server.

Este erro pode acontecer de várias maneiras:

  • Você instalou um novo pacote no servidor, mas o acesso foi negado, então R instalou o pacote em uma biblioteca de usuário.

  • Você instalou o R Services e, em seguida, instalou outra ferramenta R ou um conjunto de bibliotecas, como o RStudio.

Para determinar o local da biblioteca de pacotes R usada pela instância, abra o SQL Server Management Studio (ou qualquer outra ferramenta de consulta de banco de dados), conecte-se à instância e execute o seguinte procedimento armazenado:

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

Resultados da amostra

Mensagens do STDOUT do script externo:

[1] "C:\Arquivos de Programas\Microsoft SQL Server\MSSQL13. SQL2016\R_SERVICES"

[1] "C:/Arquivos de Programas/Microsoft SQL Server/MSSQL13. SQL2016/R_SERVICES/biblioteca"

Para resolver o problema, você deve reinstalar o pacote na biblioteca de instâncias do SQL Server.

Observação

Se você tiver atualizado uma instância do SQL Server 2016 para usar a versão mais recente do Microsoft R, o local da biblioteca padrão será diferente. Para obter mais informações, consulte Local padrão da biblioteca R.

O Launchpad é encerrado devido a DLLs incompatíveis

Se você instalar o mecanismo de banco de dados com outros recursos, corrigir o servidor e, posteriormente, adicionar o recurso de Aprendizado de Máquina usando a mídia original, a versão errada dos componentes do Aprendizado de Máquina poderá ser instalada. Quando o Launchpad deteta uma incompatibilidade de versão, ele é desligado e cria um arquivo de despejo.

Para evitar esse problema, certifique-se de instalar todos os novos recursos no mesmo nível de patch que a instância do servidor.

A maneira errada de atualizar:

  1. Instale o SQL Server 2016 sem o R Services.
  2. Atualize a Atualização Cumulativa 2 do SQL Server 2016.
  3. Instale o R Services (In-Database) usando a mídia RTM.

A maneira correta de atualizar:

  1. Instale o SQL Server 2016 sem o R Services.
  2. Atualize o SQL Server 2016 para o nível de patch desejado. Por exemplo, instale o Service Pack 1 e, em seguida, a Atualização Cumulativa 2.
  3. Para adicionar o recurso no nível de patch correto, execute a instalação do SP1 e CU2 novamente e escolha R Services (In-Database).

Launchpad falha ao iniciar se a notação 8dot3 for necessária

Observação

Em sistemas mais antigos, o Launchpad pode falhar ao arrancar se houver um requisito de notação 8dot3. Este requisito foi removido em versões posteriores. Os clientes do SQL Server 2016 R Services devem instalar uma das seguintes opções:

Para compatibilidade com R, o SQL Server 2016 R Services (In-Database) exigia a unidade onde o recurso está instalado para dar suporte à criação de nomes de arquivo curtos usando a notação 8dot3. Um nome de arquivo 8.3 também é chamado de nome de arquivo curto e é usado para compatibilidade com versões anteriores do Microsoft Windows ou como uma alternativa a nomes de arquivo longos.

Se o volume onde estás a instalar o R não suportar nomes de ficheiros curtos, os processos que iniciam o R a partir do SQL Server podem não conseguir localizar o executável correto, e o Launchpad não arranca.

Como solução alternativa, você pode habilitar a notação 8dot3 no volume onde o SQL Server está instalado e onde o R Services está instalado. Em seguida, você deve fornecer o nome abreviado para o diretório de trabalho no arquivo de configuração do R Services.

  1. Para ativar a notação 8dot3, execute a utilidade fsutil com o 8dot3name argumento.

  2. Depois que a notação 8dot3 estiver habilitada, abra o arquivo RLauncher.config e anote a propriedade de WORKING_DIRECTORY. Para informações sobre como encontrar este ficheiro, consulte Recolher dados para resolver problemas em scripts Python e R com SQL Server Machine Learning Services.

  3. Use o utilitário fsutil com o argumento file para especificar um caminho de arquivo curto para a pasta especificada em WORKING_DIRECTORY.

  4. Edite o arquivo de configuração para especificar o mesmo diretório de trabalho que você inseriu na propriedade WORKING_DIRECTORY. Como alternativa, você pode especificar um diretório de trabalho diferente e escolher um caminho existente que já seja compatível com a notação 8dot3.