Configurar PolyBase para acceder a datos externos en SQL Server

Se aplica a: SQL Server

En este artículo se explica cómo usar PolyBase en una instancia de SQL Server para consultar datos externos en otra instancia de SQL Server.

Requisitos previos

Si no ha instalado PolyBase, consulte Instalación de PolyBase. En el artículo de instalación se explican los requisitos previos. Una vez instalado, asegúrese también de habilitar PolyBase.

El origen de datos externo de SQL Server usa la autenticación de SQL.

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

Configuración de un origen de datos externos de SQL Server

Para consultar los datos de un origen de datos de SQL Server, debe crear tablas externas que hagan referencia a los datos externos. En esta sección se proporciona código de ejemplo para crear estas tablas externas.

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

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 SQL Server. En el ejemplo siguiente se crea una credencial para el origen de datos externo con IDENTITY = 'username' y SECRET = 'password'.

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

    Importante

    El conector ODBC de SQL para PolyBase solo admite la autenticación básica, no la autenticación Kerberos.

  2. Cree un origen de datos externo con CREATE EXTERNAL DATA SOURCE. En el ejemplo siguiente:

    • Se crea un origen de datos externo denominado SQLServerInstance.
    • Se identifica el origen de datos externo (LOCATION = '<vendor>://<server>[:<port>]'). En el ejemplo, se apunta a una instancia predeterminada de SQL Server.
    • Se identifica si el cálculo se debe insertar en el origen (PUSHDOWN). PUSHDOWN es ON de forma predeterminada.

    Por último, en el ejemplo se usa la credencial creada antes.

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. Cree la tabla externa con CREATE EXTERNAL TABLE. La instrucción requiere intercalación y la ubicación requiere notación de tres 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, cree estadísticas en una tabla externa.

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

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

Importante

Una vez que se haya creado un origen de datos externos, se puede usar el comando CREATE EXTERNAL TABLE para crear una tabla consultable a través de ese origen.

Tipos compatibles con el Conector de SQL Server

También puede usar el conector de SQL Server (sqlserver://) para acceder a la base de datos de Azure SQL. Para realizar esta tarea, siga los mismos pasos indicados anteriormente. Asegúrese de que la credencial de ámbito de base de datos, la dirección del servidor, el puerto y la cadena de ubicación se correspondan con los del origen de datos de la base de datos de Azure SQL al que quiere conectarse.

Pasos siguientes

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.

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