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 CLAVE MAESTRA con T-SQL
- Configura PolyBase para acceder a datos externos en Oracle
- Configura PolyBase para acceder a datos externos en el almacenamiento de objetos compatible con S3
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 de las fuentes de datos externas. Definen el esquema de los datos externos tal como se presentarán en SQL Server.
Este procedimiento requiere la creación de una credencial con alcance de base de datos (DSC) para tu fuente de datos externa.
Las DSC almacenan la información de autenticación necesaria para conectarse a las fuentes de datos externas. Estas credenciales están encriptadas con la clave maestra de la base de datos (DMK).
La DMK sirve 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 base de datos. Esta clave simétrica está encriptada con la clave maestra de servicio (SMK) y una contraseña proporcionada por el usuario. La DMK no se crea automáticamente y requiere una administración explícita por parte del usuario con T-SQL.
La SMK sirve como raíz de la jerarquía de encriptación para una instancia específica de SQL Server. SQL Server genera automáticamente esta clave simétrica 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.
Crea una credencial con alcance de base de datos (DSC) para Oracle.
Si aún no existe, cambia a una base de datos de usuario para crear una clave maestra:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Reemplaza lo siguiente:
- USER_DB: La base de datos de usuario que deseas usar para crear la clave maestra.
Por ejemplo,
polybasedb. - MK_PASSWORD: La contraseña de la clave maestra que deseas usar. Asegúrate de guardar la contraseña de la clave maestra para usarla más adelante.
- USER_DB: La base de datos de usuario que deseas usar para crear la clave maestra.
Por ejemplo,
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: El nombre de la credencial que deseas usar para la base de datos externa.
- EXTERNAL_DATABASE_USERNAME: El nombre de usuario que deseas usar para acceder a la base de datos externa.
- EXTERNAL_DATABASE_PASSWORD: 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 de forma manual.
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: El nombre que deseas usar para la base de datos externa.
- SERVER_IP: La IP del servidor o el nombre de host.
- PORT: El puerto que deseas usar.
- PUSHDOWN: Obligatorio. Pushdown
es una capacidad que se ofrece en SQL Server y debe configurarse. Establece el valor en
ONoOFF, según tu caso de uso. - DB_CREDENTIAL_NAME: La credencial que acabas de crear.
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 la tabla remota.
- Define columnas con los tipos de datos y las intercalaciones de SQL Server adecuados.
- La ubicación es la ruta de acceso de 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: El nombre de la tabla externa que deseas crear.
- COLUMN_NAME_1: El nombre de la primera columna de la tabla.
- DATA_TYPE_1: El tipo de datos de la primera columna.
- COLLATION_1: La intercalación que deseas usar para la primera columna.
- COLUMN_NAME_2: El nombre de la segunda columna de la tabla.
- DATA_TYPE_2: El tipo de datos de la segunda columna.
- COLLATION_2: La intercalación que deseas usar para la segunda columna.
- REMOTE_DATABASE: El nombre de la base de datos remota.
- REMOTE_USERNAME: El nombre de usuario del usuario remoto.
- REMOTE_TABLE_NAME: El nombre de la tabla remota.
- DB_DATA_SOURCE_NAME: El nombre de la fuente de datos externa.
Consulta la tabla externa de Oracle que creaste.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;Reemplaza lo siguiente:
- EXTERNAL_TABLE_NAME: El nombre de la tabla externa que deseas consultar.
Cloud Storage
Completa los siguientes pasos en SQL Server.
Crea una credencial con alcance de base de datos para Cloud Storage.
Si aún no existe, cambia a una base de datos de usuario para crear una clave maestra:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Reemplaza lo siguiente:
- USER_DB: La base de datos de usuario que deseas usar para crear la clave maestra.
Por ejemplo,
polybasedb. - MK_PASSWORD: La contraseña que deseas usar para la clave maestra. Asegúrate de guardar la contraseña de la clave maestra para usarla más adelante.
- USER_DB: La base de datos de usuario que deseas usar para crear la clave maestra.
Por ejemplo,
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: El nombre de la credencial de Cloud Storage que deseas usar.
- ACCESS_KEY_ID: El ID de clave de acceso.
- SECRET_KEY_ID: El ID de clave secreta.
Solo se admite la autenticación básica.
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: El nombre de la fuente de datos externa en Cloud Storage.
- STORAGE_CREDENTIAL_NAME: El nombre de la credencial para el recurso de almacenamiento externo.
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 los tipos de datos y las intercalaciones 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: El nombre del formato de archivo externo que deseas crear.
- FORMAT_TYPE: El tipo de formato que deseas usar, como
DELIMITEDTEXT. Para obtener una lista de los valores admitidos, consulta Formatos de archivo admitidos. - FIELD_TERMINATOR: El delimitador de campo que deseas usar.
- DELIMITER: El delimitador de cadena que deseas usar.
- FIRST_ROW: La fila desde la que deseas comenzar a leer.
- FILE_EXTERNAL_TABLE_NAME: El nombre de la tabla externa que deseas crear.
- COLUMN_NAME_1: El nombre de la primera columna de la tabla.
- DATA_TYPE_1: El tipo de datos de la primera columna.
- COLUMN_NAME_2: El nombre de la segunda columna de la tabla.
- DATA_TYPE_2: El tipo de datos de la segunda columna.
- PATH_TO_BUCKET: La ruta de acceso completa al bucket de Cloud Storage.
- FILENAME: El nombre de archivo ubicado dentro del bucket de Cloud Storage.
- STORAGE_DATA_SOURCE_NAME: El nombre de la fuente de datos externa en Cloud Storage.
- FILE_FORMAT_NAME: El nombre del formato de archivo externo.
Consulta la tabla externa de Cloud Storage que creaste.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;Reemplaza lo siguiente:
- FILE_EXTERNAL_TABLE_NAME: 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 la base de datos (DMK).
La DMK se encripta con la clave maestra de servicio (SMK) de la instancia de origen y la contraseña de DMK proporcionada por el usuario. En la instancia de origen, SQL Server abre la 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 desencriptar la DMK con la contraseña de usuario establecida durante su creación y volver a encriptarla con la SMK de la instancia de destino.
Para obtener más información, consulta los siguientes recursos de Microsoft:
- Abre una clave maestra de la base de datos con una contraseña
- Rota una clave maestra de la base de datos
Registros
Los siguientes registros de PolyBase están disponibles en el Explorador de registros:
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log