Configurar o PolyBase para acessar dados externos com tipos genéricos ODBC

Aplica-se a: SQL Server

O PolyBase a partir do SQL Server 2019 permite que você se conecte a fontes de dados compatíveis com ODBC usando o conector ODBC.

Este artigo demonstra como criar conectividade de configuração usando uma fonte de dados ODBC. As diretrizes fornecidas usam um driver ODBC específico como exemplo. Confira se há exemplos específicos com seu provedor ODBC. Confira a documentação do driver ODBC da sua fonte de dados para determinar as opções de cadeia de conexão apropriadas. Os exemplos neste artigo podem não se aplicar a nenhum driver ODBC específico.

Pré-requisitos

Observação

Este recurso requer o SQL Server no Windows.

  • É necessário instalar e habilitar o PolyBase para a instalação do PolyBase da sua instância do SQL Server.

  • Antes de criar um banco de dados de credencial no escopo, uma Chave Mestra deve ser criada.

Instalar o driver ODBC

Baixe e instale o driver ODBC da fonte de dados à qual você deseja se conectar em cada um dos nós do PolyBase. Depois que o driver estiver instalado corretamente, você poderá ver e testar o driver em Administrador da Fonte de Dados ODBC.

Grupos de escala horizontal do PolyBase

No exemplo acima, o nome do driver está circulado em vermelho. Use esse nome quando criar a fonte de dados externa.

Importante

Para aprimorar o desempenho da consulta, habilite o pool de conexões. Isso pode ser feito em Administrador da Fonte de Dados ODBC.

Criar objetos dependentes no SQL Server

Para usar a fonte de dados ODBC, primeiro é necessário criar alguns objetos para concluir a configuração.

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 ODBC.

    CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', Secret = '<password>';
    

    Por exemplo, o exemplo a seguir cria uma credencial chamada credential_name, com uma identidade de username e uma senha complexa.

    CREATE DATABASE SCOPED CREDENTIAL credential_name WITH IDENTITY = 'username', Secret = 'BycA4ZjrE#*2W%!';
    
  2. Crie uma fonte de dados externa, usando CREATE EXTERNAL DATA SOURCE.

    CREATE EXTERNAL DATA SOURCE [<external_data_source_name>]
    WITH ( LOCATION = 'odbc://<ODBC server address>[:<port>]',
    CONNECTION_OPTIONS = 'Driver={<Name of Installed Driver>};
    ServerNode = <name of server  address>:<Port>',
    -- PUSHDOWN = [ON] | OFF,
    CREDENTIAL = [<credential_name>] );
    

    O seguinte exemplo cria uma fonte de dados externa:

    • Chamada external_data_source_name
    • Localizada no SERVERNAME do ODBC e na porta 4444
    • Conectando-se com CData ODBC Driver For SAP 2015 – Este é o driver criado em Instalar o driver ODBC
    • No ServerNode sap_server_node porta 5555
    • Configurada para processar a propagação para os níveis interiores do servidor (PUSHDOWN = ON)
    • Usar a credencial credential_name
    CREATE EXTERNAL DATA SOURCE external_data_source_name
    WITH ( LOCATION = 'odbc://SERVERNAME:4444',
    CONNECTION_OPTIONS = 'Driver={CData ODBC Driver For SAP 2015};
    ServerNode = sap_server_node:5555',
    PUSHDOWN = ON,
    CREDENTIAL = credential_name );
    

Criar uma tabela externa

Depois de criar os objetos dependentes, você poderá criar tabelas externas usando o T-SQL.

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

  1. Crie uma ou mais tabelas externas.

    Crie uma tabela externa. Você precisará fazer referência à fonte de dados externa criada acima usando o argumento DATA_SOURCE e especificar a tabela de origem como LOCATION. Você não tem que fazer referência a todas as colunas, mas precisará garantir que os tipos sejam mapeados corretamente.

      CREATE EXTERNAL TABLE [<your_table_name>]
      (
      [<col1_name>]     DECIMAL(38) NOT NULL,
      [<col2_name>]     DECIMAL(38) NOT NULL,
      [<col3_name>]     CHAR COLLATE Latin1_General_BIN NOT NULL
      )
      WITH (
      LOCATION='<sap_table_name>',
      DATA_SOURCE= [<external_data_source_name>]
      )
      ;
    

    Observação

    Observe que você pode usar novamente os objetos dependentes em todas as tabelas externas usando essa fonte de dados externa.

  2. Opcional: criar estatísticas em uma tabela externa.

    Para obter desempenho de consulta ideal, é recomendável criar estatísticas em colunas de tabelas externas, especialmente aquelas usadas para junções, filtros e agregações.

    CREATE STATISTICS statistics_name ON contact (FirstName) WITH FULLSCAN; 
    

Próximas etapas

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

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.