Configura fuentes de datos externas para usarlas con PolyBase

<meta <="" content="En esta página, se describe cómo configurar fuentes de datos externas para usarlas con PolyBase y tus instancias de Cloud SQL para SQL Server." name="description" />

En esta página, se muestra cómo configurar y administrar fuentes de datos externas para usarlas con PolyBase y tus instancias de Cloud SQL para SQL Server.

Administra el acceso a objetos externos

Cloud SQL solo admite operaciones para habilitar y, luego, inhabilitar PolyBase. Los usuarios deben administrar las entidades de SQL Server de forma manual con instrucciones de T-SQL.

Antes de administrar tus entidades de SQL Server de forma manual, revisa los siguientes recursos de Microsoft:

Crea una fuente de datos externa

En los siguientes pasos, se muestra cómo crear una fuente de datos externa para tu instancia de Cloud SQL para SQL Server.

SQL Server define una fuente de datos externa como un recurso con información de conexión, como el nombre del servidor, el nombre de la base de datos y la cadena de conexión.

SQL Server define las tablas externas como objetos de metadatos dentro de SQL Server que apuntan a los datos en las fuentes de datos externas. Definen el esquema de los datos externos tal como se presentarán en SQL Server.

Este procedimiento requiere que crees una credencial con alcance en la base de datos (DSC) para tu fuente de datos externa.

Los DSC almacenan la información de autenticación necesaria para conectarse a las fuentes de datos externas. Estas credenciales se encriptan con la clave maestra de la base de datos (DMK).

La DMK actúa como raíz de la jerarquía de encriptación dentro de una base de datos, lo que protege los secretos en las credenciales con alcance de la base de datos. Esta clave simétrica se encripta con la clave maestra del servicio (SMK) y una contraseña proporcionada por el usuario. La DMK no se crea automáticamente y requiere que el usuario la administre de forma explícita con T-SQL.

La SMK actúa como raíz de la jerarquía de encriptación para una instancia específica de SQL Server. Esta clave simétrica la genera automáticamente el propio SQL Server la primera vez que se inicia y se usa para proteger otros objetos de seguridad, como las DMK y las contraseñas de acceso.

Oracle

Completa los siguientes pasos en SQL Server.

  1. Crea una credencial con alcance en la base de datos (DSC) para Oracle.

    1. Si aún no existe una, cambia a una base de datos del usuario para crear una clave maestra:

      USE USER_DB;
      CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';
      

      Reemplaza lo siguiente:

      • USER_DB: Es la base de datos del usuario que deseas usar para crear la clave maestra. Por ejemplo, polybasedb
      • MK_PASSWORD: Es la contraseña de la clave principal que deseas usar. Asegúrate de guardar la contraseña de la llave maestra para usarla más adelante.
    2. Crea una credencial con alcance de base de datos para la fuente de datos de Oracle.

      CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';
      

      Reemplaza lo siguiente:

      • DB_CREDENTIAL_NAME: Es el nombre de la credencial que quieres usar para la base de datos externa.
      • EXTERNAL_DATABASE_USERNAME: Es el nombre de usuario que deseas usar para acceder a la base de datos externa.
      • EXTERNAL_DATABASE_PASSWORD: Es la contraseña de la base de datos externa. Las credenciales de la fuente de datos externa deben actualizarse cuando se rotan y debes administrarlas manualmente.
  2. Crea una fuente de datos externa para Oracle.

    CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME
    WITH (
        LOCATION = 'oracle://SERVER_IP:PORT',
        PUSHDOWN = PUSHDOWN,
        CREDENTIAL = DB_CREDENTIAL_NAME
    );
    

    Reemplaza lo siguiente:

    • DATA_SOURCE_NAME: Es el nombre que deseas usar para la base de datos externa.
    • SERVER_IP: Es la IP del servidor o el nombre de host.
    • PORT: Es el puerto que deseas usar.
    • PUSHDOWN: Obligatorio. Pushdown es una capacidad que se ofrece en SQL Server y que se debe configurar. Establece el valor en ON o OFF, según tu caso de uso.
    • DB_CREDENTIAL_NAME: Es la credencial que acabas de crear.
  3. Crea una tabla externa.

    Define el esquema y la estructura de los datos externos:

    • Crea la definición de la tabla externa. El esquema debe coincidir con el de la tabla remota.
    • Define columnas con las intercalaciones y los tipos de datos de SQL Server adecuados.
    • La ubicación es la ruta de acceso a la tabla remota.
    CREATE EXTERNAL TABLE EXTERNAL_TABLE_NAME(
        COLUMN_NAME_1 DATA_TYPE_1 COLLATE COLLATION_1,
        COLUMN_NAME_2 DATA_TYPE_2 COLLATE COLLATION_2,
        ...
    )
    WITH(
        LOCATION = 'REMOTE_DATABASE.REMOTE_USERNAME.REMOTE_TABLE_NAME',
        DATA_SOURCE = DB_DATA_SOURCE_NAME
    );
    

    Reemplaza lo siguiente:

    • EXTERNAL_TABLE_NAME: Es el nombre de la tabla externa que deseas crear.
    • COLUMN_NAME_1: Es el nombre de la primera columna de la tabla.
    • DATA_TYPE_1: Es el tipo de datos de la primera columna.
    • COLLATION_1: Es la intercalación que deseas usar para la primera columna.
    • COLUMN_NAME_2: Es el nombre de la segunda columna de la tabla.
    • DATA_TYPE_2: Es el tipo de datos de la segunda columna.
    • COLLATION_2: Es la intercalación que deseas usar para la segunda columna.
    • REMOTE_DATABASE: Es el nombre de la base de datos remota.
    • REMOTE_USERNAME: Es el nombre de usuario del usuario remoto.
    • REMOTE_TABLE_NAME: Es el nombre de la tabla remota.
    • DB_DATA_SOURCE_NAME: Es el nombre de la fuente de datos externa.
  4. Consulta la tabla externa de Oracle que creaste.

    SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;
    

    Reemplaza lo siguiente:

    • EXTERNAL_TABLE_NAME: Es el nombre de la tabla externa que deseas consultar.

Cloud Storage

Completa los siguientes pasos en SQL Server.

  1. Crea una credencial con alcance de base de datos para Cloud Storage.

    1. Si aún no existe una, cambia a una base de datos del usuario para crear una clave maestra:

      USE USER_DB;
      CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';
      

      Reemplaza lo siguiente:

      • USER_DB: Es la base de datos del usuario que deseas usar para crear la clave maestra. Por ejemplo, polybasedb
      • MK_PASSWORD: Es la contraseña que deseas usar para la clave maestra. Asegúrate de guardar la contraseña de la llave maestra para usarla más adelante.
    2. Cloud Storage requiere un ID de clave de acceso y un ID de clave secreta:

      CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';
      

      Reemplaza lo siguiente:

      • STORAGE_CREDENTIAL_NAME: Es el nombre de la credencial de Cloud Storage que deseas usar.
      • ACCESS_KEY_ID: Es el ID de la clave de acceso.
      • SECRET_KEY_ID: Es el ID de la clave secreta.

      Solo se admite la autenticación básica.

  2. Crea una fuente de datos externa.

    CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME
    WITH (
        LOCATION = 's3://storage.googleapis.com/',
        CREDENTIAL = STORAGE_CREDENTIAL_NAME
    );
    

    Reemplaza lo siguiente:

    • STORAGE_DATA_SOURCE_NAME: Es el nombre de la fuente de datos externa en Cloud Storage.
    • STORAGE_CREDENTIAL_NAME: Es el nombre de la credencial para el recurso de almacenamiento externo.
  3. Crea una tabla externa para Cloud Storage.

    Define el formato y la estructura de los datos externos:

    • Crea el archivo externo. El esquema debe coincidir con la estructura del archivo.
    • Define columnas con las intercalaciones y los tipos de datos de SQL Server adecuados.
    • La ubicación es la ruta de acceso dentro de la fuente de datos.
    CREATE EXTERNAL FILE FORMAT FILE_FORMAT_NAME
    WITH (
        FORMAT_TYPE = FORMAT_TYPE,
        FORMAT_OPTIONS (
            FIELD_TERMINATOR = 'FIELD_TERMINATOR',
            STRING_DELIMITER = 'DELIMITER',
            FIRST_ROW = FIRST_ROW
        )
    );
    
    CREATE EXTERNAL TABLE FILE_EXTERNAL_TABLE_NAME (
        COLUMN_NAME_1 DATA_TYPE_1,
        COLUMN_NAME_2 DATA_TYPE_2,
        ...
    )
    WITH (
        LOCATION = 'PATH_TO_BUCKET/FILENAME',
        DATA_SOURCE = STORAGE_DATA_SOURCE_NAME,
        FILE_FORMAT = FILE_FORMAT_NAME
    );
    

    Reemplaza lo siguiente:

    • FILE_FORMAT_NAME: Es el nombre del formato de archivo externo que deseas crear.
    • FORMAT_TYPE: Es el tipo de formato que deseas usar, como DELIMITEDTEXT. Para obtener una lista de los valores admitidos, consulta Formatos de archivo compatibles.
    • FIELD_TERMINATOR: Es el delimitador de campo que deseas usar.
    • DELIMITER: Es el delimitador de cadena que deseas usar.
    • FIRST_ROW: Es la fila desde la que deseas comenzar a leer.
    • FILE_EXTERNAL_TABLE_NAME: Es el nombre de la tabla externa que deseas crear.
    • COLUMN_NAME_1: Es el nombre de la primera columna de la tabla.
    • DATA_TYPE_1: Es el tipo de datos de la primera columna.
    • COLUMN_NAME_2: Es el nombre de la segunda columna de la tabla.
    • DATA_TYPE_2: Es el tipo de datos de la segunda columna.
    • PATH_TO_BUCKET: Es la ruta de acceso completa al bucket de Cloud Storage.
    • FILENAME: Es el nombre del archivo ubicado dentro del bucket de Cloud Storage.
    • STORAGE_DATA_SOURCE_NAME: Es el nombre de la fuente de datos externa en Cloud Storage.
    • FILE_FORMAT_NAME: Es el nombre del formato de archivo externo.
  4. Consulta la tabla externa de Cloud Storage que creaste.

    SELECT * FROM FILE_EXTERNAL_TABLE_NAME;
    

    Reemplaza lo siguiente:

    • FILE_EXTERNAL_TABLE_NAME: Es el nombre de la tabla externa que deseas consultar.

Administra la clave maestra de la base de datos después de una operación de restablecimiento de la base de datos

Las credenciales con alcance de base de datos que se usan para acceder a fuentes de datos externas se encriptan con una clave maestra de base de datos (DMK).

La DMK se encripta con la clave maestra del servicio (SMK) de la instancia de origen y la contraseña de la DMK proporcionada por el usuario. En la instancia de origen, SQL Server abre el DMK de forma silenciosa con una SMK.

Si restableces una instancia de Cloud SQL para SQL Server, la DMK no se abrirá automáticamente en la instancia nueva debido a los cambios en la SMK.

Como resultado, primero debes descifrar la DMK con la contraseña del usuario establecida durante su creación y volver a cifrarla con la SMK de la instancia de destino.

Para obtener más información, consulta los siguientes recursos de Microsoft:

Registros

Los siguientes registros de PolyBase están disponibles en el Explorador de registros:

  • Polybase_Dms_errors.log
  • Polybase_Dms_movement.log
  • Polybase_DWEngine_errors.log
  • Polybase_DWEngine_movement.log
  • Polybase_DWEngine_server.log

Para obtener más información, consulta la documentación de Microsoft sobre la solución de problemas de PolyBase.

¿Qué sigue?