Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Este artigo documenta vários erros de script comuns ao executar script R nos Serviços de Machine Learning do SQL Server. A lista não é completa. Existem muitos pacotes e os erros podem variar entre as diferentes versões do mesmo pacote.
O script válido falha no T-SQL ou nos procedimentos armazenados
Antes de encapsular o código R em um procedimento armazenado, é uma boa ideia executar o código R em um IDE externo ou em uma das ferramentas do R, como RTerm ou RGui. Ao usar esses métodos, você pode testar e depurar o código usando as mensagens de erro detalhadas que são retornadas pelo R.
No entanto, às vezes o código que funciona perfeitamente em um IDE ou utilitário externo pode falhar ao ser executado em um procedimento armazenado ou em um contexto de computação do SQL Server. Se isso acontecer, existem diversos problemas a serem procurados antes de supor que o pacote não funciona no SQL Server.
Verifique se a Launchpad está em execução.
Examine as mensagens para ver se os dados de entrada ou de saída contêm colunas com tipos de dados incompatíveis ou sem suporte. Por exemplo, consultas em um Banco de Dados SQL geralmente retornam GUIDs ou RowGUIDs, ambos sem suporte. Para obter mais informações, confira Tipos de dados e bibliotecas do R.
Examine as páginas de ajuda para funções individuais do R para determinar se todos os parâmetros têm suporte para o contexto de computação do SQL Server. Para obter ajuda do ScaleR, use os comandos da Ajuda do R embutidos ou confira a Referência de Pacote.
Se o runtime do R estiver funcionando, mas o script retornar erros, recomendamos tentar depurar o script em um ambiente de desenvolvimento do R dedicado, como Ferramentas do R para Visual Studio.
Também recomendamos examinar e reescrever um pouco o script para corrigir quaisquer problemas com tipos de dados que possam surgir ao mover dados entre o R e o mecanismo de banco de dados. Para obter mais informações, confira Tipos de dados e bibliotecas do R.
Além disso, você pode usar o pacote sqlrutils para agrupar o script R em um formato mais facilmente consumido como um procedimento armazenado. Para obter mais informações, consulte:
O script retorna resultados inconsistentes
Os scripts do R podem retornar valores diferentes em um contexto do SQL Server por vários motivos:
A conversão implícita de tipo é executada automaticamente em alguns tipos de dados quando os dados são passados entre o SQL Server e o R. Para obter mais informações, confira Tipos de dados e bibliotecas do R.
Determine se o número de bit é um fator. Por exemplo, geralmente há diferenças nos resultados de operações matemáticas para bibliotecas de ponto flutuante de 32 bits e de 64 bits.
Determine se os NaNs foram produzidos em qualquer operação. Isso pode invalidar os resultados.
Pequenas diferenças podem ser amplificadas quando você usa um recíproco de um número próximo de zero.
Os erros de arredondamento acumulados podem causar coisas como valores menores que zero, em vez de zero.
Autenticação implícita para execução remota via ODBC
Se você conectar-se ao computador SQL Server para executar comandos do R usando as funções RevoScaleR, poderá receber um erro ao usar chamadas ODBC que gravam dados no servidor. Esse erro ocorre somente quando você está usando a autenticação do Windows.
O motivo é que as contas de trabalho criadas para o R Services não têm permissão para se conectar ao servidor. Portanto, não é possível executar as chamadas ODBC em seu nome. O problema não ocorre com logons do SQL porque, com logons do SQL, as credenciais são passadas explicitamente do cliente R para a instância do SQL Server e, em seguida, para o ODBC. No entanto, usar logons do SQL também é menos seguro do que usar a autenticação do Windows.
Para permitir que suas credenciais do Windows sejam passadas com segurança de um script iniciado remotamente, o SQL Server deve emular suas credenciais. Esse processo é chamado de autenticação implícita. Para fazer isso funcionar, as contas de trabalho que executam scripts do R ou do Python no computador SQL Server devem ter as permissões corretas.
Abra o SQL Server Management Studio como administrador na instância em que você deseja executar o código R.
Execute o seguinte script. Edite o nome do grupo de usuários, caso tenha alterado o padrão e os nomes do computador e da instância.
USE [master] GO CREATE LOGIN [computername\\SQLRUserGroup] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[language] GO
Evite limpar o workspace enquanto estiver executando o R em um contexto de computação do SQL
Embora a limpeza do workspace seja comum ao trabalhar no console do R, ela poderá trazer consequências indesejadas em um contexto de computação do SQL.
O revoScriptConnection é um objeto no workspace do R que contém informações sobre uma sessão do R chamada por meio do SQL Server. No entanto, se o código R incluir um comando para limpar o workspace (como rm(list=ls())), todas as informações sobre a sessão e outros objetos no workspace do R também serão limpos.
Como alternativa, evite a limpeza indiscriminada de variáveis e outros objetos ao executar o R no SQL Server. Você pode excluir variáveis específicas usando a função remover:
remove('name1', 'name2', ...)
Se houver diversas variáveis a serem excluídas, sugerimos salvar os nomes das variáveis temporárias em uma lista e executar a coleta de lixo periódica.
Próximas etapas
Coleta de dados para solução de problemas dos Serviços de Machine Learning do SQL Server
Instalar os Serviços de Machine Learning do SQL Server
Solucionar problemas de conexões de mecanismo de banco de dados