Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2017 (14.x)
A versão do RevoScaleR incluída no SQL Server 2017 inclui a capacidade de sincronizar coleções de pacotes R entre o sistema de arquivos e a instância e o banco de dados onde os pacotes são usados.
Esse recurso foi fornecido para facilitar o backup de coleções de pacotes R associadas a bancos de dados do SQL Server. Usando esse recurso, um administrador pode restaurar não apenas o banco de dados, mas quaisquer pacotes R que foram usados por cientistas de dados que trabalham nesse banco de dados.
Este artigo descreve o recurso de sincronização de pacotes e como usar a função rxSyncPackages para executar as seguintes tarefas:
Sincronizar uma lista de pacotes para um banco de dados SQL Server inteiro
Sincronizar pacotes usados por um usuário individual ou por um grupo de usuários
Se um usuário mover para um SQL Server diferente, você poderá fazer um backup do banco de dados de trabalho do usuário e restaurá-lo para o novo servidor, e os pacotes para o usuário serão instalados no sistema de arquivos no novo servidor, conforme exigido pelo R.
Por exemplo, você pode usar a sincronização de pacotes nestes cenários:
O DBA restaurou uma instância do SQL Server em uma nova máquina e solicita que os usuários se conectem a partir de seus clientes R e executem
rxSyncPackagespara atualizar e restaurar seus pacotes.Você acha que um pacote R no sistema de arquivos está corrompido, então executa
rxSyncPackagesno SQL Server.
Requerimentos
Antes de poder usar a sincronização de pacotes, você deve ter a versão apropriada do Microsoft R. Este recurso é fornecido no Microsoft R versão 9.1.0 ou posterior.
Você também deve habilitar o recurso de gerenciamento de pacotes no servidor.
Determinar se o servidor suporta o gerenciamento de pacotes
Esse recurso está disponível no SQL Server 2017 (14.x) e versões posteriores.
Habilitar o recurso de gerenciamento de pacotes
Para usar a sincronização de pacotes, é necessário que o novo recurso de gerenciamento de pacotes seja habilitado na instância do SQL Server e em bancos de dados individuais. Para obter mais informações, consulte Habilitar ou desabilitar o gerenciamento de pacotes para o SQL Server.
- O administrador do servidor habilita o recurso para a instância do SQL Server.
- Para cada banco de dados, o administrador concede aos usuários individuais a capacidade de instalar ou compartilhar pacotes R, usando funções de banco de dados.
Quando isso é feito, você pode usar funções RevoScaleR, como rxInstallPackages para instalar pacotes em um banco de dados. As informações sobre os usuários e os pacotes que eles podem usar são armazenadas na instância do SQL Server.
Sempre que você adiciona um novo pacote usando as funções de gerenciamento de pacotes, os registros no SQL Server e no sistema de arquivos são atualizados. Essas informações podem ser usadas para restaurar as informações do pacote para todo o banco de dados.
Permissions
A pessoa que executa a função de sincronização de pacotes deve ser uma entidade de segurança na instância do SQL Server e no banco de dados que contém os pacotes.
O chamador da função deve ser membro de um destes papéis de gerenciamento de pacotes: rpkgs-shared ou rpkgs-private.
Para sincronizar pacotes marcados como compartilhados, a pessoa que está executando a função deve ser membro da função rpkgs-shared e os pacotes que estão sendo movidos devem ter sido instalados em uma biblioteca de escopo compartilhado.
Para sincronizar pacotes marcados como privados, o proprietário do pacote ou o administrador deve executar a função e os pacotes devem ser privados.
Para sincronizar pacotes em nome de outros usuários, o proprietário deve ser membro da função de banco de dados db_owner .
Como funciona a sincronização de pacotes
Para usar a sincronização de pacotes, chame rxSyncPackages, que é uma nova função no RevoScaleR.
Para cada chamada para rxSyncPackages, deve especificar uma instância e um banco de dados do SQL Server. Em seguida, liste os pacotes a serem sincronizados ou especifique o escopo do pacote.
Crie o contexto de computação do SQL Server usando a
RxInSqlServerfunção. Se você não especificar um contexto de computação, o contexto de computação atual será usado.Forneça o nome de um banco de dados na instância no contexto de computação especificado. Os pacotes são sincronizados por banco de dados.
Especifique os pacotes a serem sincronizados usando o argumento scope.
Se você usar o escopo privado , somente os pacotes de propriedade do proprietário especificado serão sincronizados. Se você especificar o escopo compartilhado , todos os pacotes não privados no banco de dados serão sincronizados.
Se você executar a função sem especificar o escopo privado ou compartilhado , todos os pacotes serão sincronizados.
Se o comando for bem-sucedido, os pacotes existentes no sistema de arquivos serão adicionados ao banco de dados, com o escopo e o proprietário especificados.
Se o sistema de arquivos estiver corrompido, os pacotes serão restaurados com base na lista mantida no banco de dados.
Se o recurso de gerenciamento de pacotes não estiver disponível no banco de dados de destino, um erro será gerado: "O recurso de gerenciamento de pacotes não está habilitado no SQL Server ou a versão é muito antiga"
Exemplo 1. Sincronizar todos os pacotes por banco de dados
Este exemplo obtém quaisquer novos pacotes do sistema de arquivos local e instala os pacotes no banco de dados [TestDB]. Como nenhum proprietário é específico, a lista inclui todos os pacotes que foram instalados para escopos privados e compartilhados.
connectionString <- "Driver=SQL Server;Server=myServer;Database=TestDB;Trusted_Connection=True;"
computeContext <- RxInSqlServer(connectionString = connectionString )
rxSyncPackages(computeContext=computeContext, verbose=TRUE)
Exemplo 2. Restringir pacotes sincronizados por escopo
Os exemplos a seguir sincronizam apenas os pacotes no escopo especificado.
#Shared scope
rxSyncPackages(computeContext=computeContext, scope="shared", verbose=TRUE)
#Private scope
rxSyncPackages(computeContext=computeContext, scope="private", verbose=TRUE)
Exemplo 3. Restringir pacotes sincronizados por proprietário
O exemplo a seguir demonstra como sincronizar apenas os pacotes que foram instalados para um usuário específico. Neste exemplo, o usuário é identificado pelo nome de logon SQL, user1.
rxSyncPackages(computeContext=computeContext, scope="private", owner = "user1", verbose=TRUE))