Configuración de PolyBase para acceder a datos externos con tipos genéricos de ODBC

Se aplica a:SQL Server

PolyBase a partir de SQL Server 2019 permite conectarse a orígenes de datos compatibles con ODBC por medio del conector ODBC.

En este artículo se muestra cómo crear la configuración de la conectividad mediante un origen de datos ODBC. En las instrucciones proporcionadas se usa un controlador ODBC específico como ejemplo. Consulte con el proveedor de ODBC para obtener ejemplos específicos. Consulte la documentación del controlador ODBC para el origen de datos con el fin de determinar las opciones de cadena de conexión apropiadas. Es posible que los ejemplos de este artículo no se apliquen a ningún controlador ODBC específico.

Requisitos previos

Nota:

Esta característica requiere SQL Server en Windows.

  • PolyBase debe instalarse y habilitarse para la instalación de PolyBase de la instancia de SQL Server.

  • Se debe crear una Clave maestra antes de crear una credencial de ámbito de base de datos.

Instalación del controlador ODBC

Descargue e instale el controlador ODBC del origen de datos al que quiere conectarse en cada uno de los nodos de PolyBase. Una vez que el controlador está instalado correctamente, puede verlo y probarlo desde el Administrador de orígenes de datos ODBC.

PolyBase scale-out groups

En el ejemplo anterior, el nombre del controlador aparece rodeado de un círculo rojo. Use este nombre al crear el origen de datos externo.

Importante

Para mejorar el rendimiento de las consultas, habilite la agrupación de conexiones. Esto se puede hacer desde el Administrador de orígenes de datos ODBC.

Creación de objetos dependientes en SQL Server

Para usar el origen de datos ODBC, primero se deben crear algunos objetos para completar la configuración.

En esta sección se utilizan los siguientes comandos de Transact-SQL:

  1. Cree una credencial de ámbito de base de datos para acceder al origen de datos ODBC.

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

    Por ejemplo, en el ejemplo siguiente se crea una credencial denominada credential_name, con una identidad de username y una contraseña compleja.

    CREATE DATABASE SCOPED CREDENTIAL credential_name WITH IDENTITY = 'username', Secret = 'BycA4ZjrE#*2W%!';
    
  2. Cree un origen de datos externo con 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>] );
    

    En el ejemplo siguiente se crea un origen de datos externo:

    • Con el nombre external_data_source_name
    • Se encuentra en el SERVERNAME ODBC y el puerto 4444
    • Se conecta con CData ODBC Driver For SAP 2015: es el controlador creado en Instalación del controlador ODBC
    • En el ServerNodesap_server_node puerto 5555
    • Configurado para el procesamiento que se inserta en el servidor (PUSHDOWN = ON)
    • Mediante la 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 );
    

Crear una tabla externa

Una vez que haya creado los objetos dependientes, puede crear una tabla externa mediante T-SQL.

En esta sección se utilizan los siguientes comandos de Transact-SQL:

  1. Cree una o varias tablas externas.

    Cree una tabla externa. Tendrá que hacer referencia al origen de datos externo creado anteriormente mediante el argumento DATA_SOURCE y especificar la tabla de origen como LOCATION. No es necesario hacer referencia a todas las columnas, pero deberá asegurarse de que los tipos están correctamente asignados.

      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>]
      )
      ;
    

    Nota:

    Tenga en cuenta que puede volver a usar los objetos dependientes para todas las tablas externas que usan este origen de datos externo.

  2. Opcional: cree estadísticas en una tabla externa.

    Para obtener un rendimiento óptimo de las consultas, se recomienda crear estadísticas en las columnas de tabla externa, sobre todo en las que se usan para combinaciones, filtros y agregados.

    CREATE STATISTICS statistics_name ON contact (FirstName) WITH FULLSCAN; 
    

Pasos siguientes

Para obtener más información sobre PolyBase, consulte la información general de SQL Server PolyBase.

Para obtener más tutoriales sobre cómo crear orígenes de datos externos y tablas externas en una variedad de orígenes de datos, consulte Referencia de Transact-SQL de PolyBase.