Configurar o PolyBase para acessar dados externos no SQL Server

Aplica-se a: SQL Server

Este artigo explica como usar o PolyBase em uma instância do SQL Server para consultar dados externos em outra instância do SQL Server.

Pré-requisitos

Se você ainda não instalou o PolyBase, veja Instalação do PolyBase. O artigo sobre a instalação explica os pré-requisitos. Uma vez instalado, certifique-se também de habilitar o PolyBase.

A fonte de dados externa do SQL Server usa a Autenticação SQL.

Antes de criar um banco de dados de credencial no escopo, uma chave mestra deve ser criada.

Configurar uma fonte de dados externa do SQL Server

Para consultar os dados de uma fonte de dados do SQL Server, você precisa criar tabelas externas para fazer referência aos dados externos. Esta seção fornece código de exemplo para criar essas tabelas externas.

Para obter um desempenho de consulta ideal, crie estatísticas em colunas de tabelas externas, especialmente aquelas usadas para junções, filtros e agregações.

Os seguintes comandos Transact-SQL são usados nesta seção:

  1. Crie uma credencial no escopo do banco de dados para acessar a fonte do SQL Server. O exemplo a seguir cria uma credencial para a fonte de dados externa com IDENTITY = 'username' e SECRET = 'password'.

    CREATE DATABASE SCOPED CREDENTIAL SqlServerCredentials
    WITH IDENTITY = 'username', SECRET = 'password';
    

    Importante

    O Conector ODBC do SQL para PolyBase dá suporte apenas à autenticação Básica, não à autenticação Kerberos.

  2. Crie uma fonte de dados externa, usando CREATE EXTERNAL DATA SOURCE. O exemplo a seguir:

    • Cria uma fonte de dados externa nomeada como SQLServerInstance.
    • Identifica a fonte de dados externa (LOCATION = '<vendor>://<server>[:<port>]'). No exemplo, ele aponta para uma instância padrão do SQL Server.
    • Identifica se a computação deve ser enviada por push para a origem (PUSHDOWN). PUSHDOWN é ON por padrão.

    Por fim, o exemplo usa a credencial criada anteriormente.

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. Crie a tabela externa com CREATE EXTERNAL TABLE. A instrução exige uma ordenação, e a localização exige uma notação de três partes (<database>.<schema>.<table>).

    CREATE EXTERNAL TABLE DatabasesExternal (
        name VARCHAR(128) COLLATE SQL_Latin1_General_CP1_CI_AS)
      WITH (LOCATION = 'master.sys.databases',
      DATA_SOURCE = SQLServerInstance);
    
  4. Opcionalmente, crie estatísticas em uma tabela externa.

Para obter um desempenho de consulta ideal, crie estatísticas em colunas de tabelas externas, especialmente aquelas usadas para junções, filtros e agregações.

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

Importante

Depois de criar uma fonte de dados externa, você pode usar o comando CREATE EXTERNAL TABLE para criar uma tabela que possa ser consultada por essa fonte.

Tipos compatíveis com o conector do SQL Server

Você também pode usar o conector do SQL Server (sqlserver://) para acessar o Banco de Dados SQL do Azure. Para realizar essa tarefa, siga as mesmas etapas listadas anteriormente. Verifique se a credencial com escopo de banco de dados, o endereço do servidor, a porta e a cadeia de localização estão correlacionados com os da fonte de dados do Banco de Dados SQL do Azure à qual você deseja se conectar.

Próximas etapas

Para obter mais tutoriais sobre como criar fontes de dados externas e tabelas externas para uma variedade de fontes de dados, consulte Referência do PolyBase Transact-SQL.

Para saber mais sobre o PolyBase, consulte Visão geral do PolyBase do SQL Server.