Questa pagina mostra come configurare e gestire le origini dati esterne per l'utilizzo con PolyBase e le istanze Cloud SQL per SQL Server.
Gestire l'accesso agli oggetti esterni
Cloud SQL supporta solo le operazioni per abilitare e disabilitare PolyBase. Gli utenti devono gestire manualmente le entità SQL Server utilizzando le istruzioni T-SQL.
Prima di gestire manualmente le entità SQL Server, consulta le seguenti risorse Microsoft:
- Creare una chiave master utilizzando T-SQL
- Configurare PolyBase per accedere ai dati esterni in Oracle
- Configurare PolyBase per accedere ai dati esterni in un archivio oggetti compatibile con S3
Creare un'origine dati esterna
I passaggi seguenti mostrano come creare un'origine dati esterna per l'istanza Cloud SQL per SQL Server.
SQL Server definisce un'origine dati esterna come una risorsa con informazioni di connessione come il nome del server, il nome del database e la stringa di connessione.
SQL Server definisce le tabelle esterne come oggetti di metadati all'interno di SQL Server che puntano ai dati nelle origini dati esterne. Definiscono lo schema dei dati esterni così come verranno presentati in SQL Server.
Questa procedura richiede la creazione di una credenziale con ambito database (DSC) per l'origine dati esterna.
I DSC memorizzano le informazioni di autenticazione necessarie per connettersi alle origini dati esterne. Queste credenziali sono criptate dalla chiave master del database (DMK).
La DMK funge da radice della gerarchia di crittografia all'interno di un database, proteggendo i secret nelle credenziali con ambito database. Questa chiave simmetrica è criptata dalla chiave master del servizio (SMK) e da una password fornita dall'utente. La DMK non viene creata automaticamente e richiede una gestione esplicita da parte dell'utente tramite T-SQL.
La SMK funge da radice della gerarchia di crittografia per un'istanza specifica di SQL Server. Questa chiave simmetrica viene generata automaticamente da SQL Server stesso, al primo avvio, e viene utilizzata per proteggere altri oggetti di sicurezza come DMK e password di accesso.
Oracle
Completa i seguenti passaggi in SQL Server.
Crea una credenziale con ambito database (DSC) per Oracle.
Se non ne esiste già una, passa a un database utente per creare una chiave master:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Sostituisci quanto segue:
- USER_DB: il database utente che vuoi utilizzare per creare la chiave master.
Ad esempio,
polybasedb. - MK_PASSWORD: la password della chiave master che vuoi utilizzare. Assicurati di salvare la password della chiave master per un utilizzo futuro.
- USER_DB: il database utente che vuoi utilizzare per creare la chiave master.
Ad esempio,
Crea una credenziale con ambito database per l'origine dati Oracle.
CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';Sostituisci quanto segue:
- DB_CREDENTIAL_NAME: il nome della credenziale che vuoi utilizzare per il database esterno.
- EXTERNAL_DATABASE_USERNAME: il nome utente che vuoi utilizzare per accedere al database esterno.
- EXTERNAL_DATABASE_PASSWORD: la password del database esterno. Le credenziali per origine dati esterna devono essere aggiornate quando vengono ruotate e devono essere gestite manualmente da te.
Crea un'origine dati esterna per Oracle.
CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME WITH ( LOCATION = 'oracle://SERVER_IP:PORT', PUSHDOWN = PUSHDOWN, CREDENTIAL = DB_CREDENTIAL_NAME );Sostituisci quanto segue:
- DATA_SOURCE_NAME: il nome che vuoi utilizzare per il database esterno.
- SERVER_IP: l'IP del server o il nome host.
- PORT: la porta che vuoi utilizzare.
- PUSHDOWN: obbligatorio. Il pushdown
è una funzionalità offerta in SQL Server e deve essere configurata. Imposta il valore su
ONoOFF, a seconda del tuo caso d'uso. - DB_CREDENTIAL_NAME: la credenziale che hai appena creato.
Crea una tabella esterna.
Definisci lo schema e la struttura dei dati esterni:
- Crea la definizione della tabella esterna. Lo schema deve corrispondere alla tabella remota.
- Definisci le colonne con tipi di dati e regole di confronto SQL Server appropriati.
- La posizione è il percorso della tabella 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 );Sostituisci quanto segue:
- EXTERNAL_TABLE_NAME: il nome della tabella esterna che vuoi creare.
- COLUMN_NAME_1: il nome della prima colonna della tabella.
- DATA_TYPE_1: il tipo di dati della prima colonna.
- COLLATION_1: le regole di confronto che vuoi utilizzare per la prima colonna.
- COLUMN_NAME_2: il nome della seconda colonna della tabella.
- DATA_TYPE_2: il tipo di dati della seconda colonna.
- COLLATION_2: le regole di confronto che vuoi utilizzare per la seconda colonna.
- REMOTE_DATABASE: il nome del database remoto.
- REMOTE_USERNAME: il nome utente dell'utente remoto.
- REMOTE_TABLE_NAME: il nome della tabella remota.
- DB_DATA_SOURCE_NAME: il nome dell'origine dati esterna.
Esegui una query sulla tabella Oracle esterna che hai creato.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;Sostituisci quanto segue:
- EXTERNAL_TABLE_NAME: il nome della tabella esterna su cui vuoi eseguire la query.
Cloud Storage
Completa i seguenti passaggi in SQL Server.
Crea una credenziale con ambito database per Cloud Storage.
Se non ne esiste già una, passa a un database utente per creare una chiave master:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Sostituisci quanto segue:
- USER_DB: il database utente che vuoi utilizzare per creare la chiave master.
Ad esempio,
polybasedb. - MK_PASSWORD: la password che vuoi utilizzare per la chiave master. Assicurati di salvare la password della chiave master per un utilizzo futuro.
- USER_DB: il database utente che vuoi utilizzare per creare la chiave master.
Ad esempio,
Cloud Storage richiede un ID chiave di accesso e un ID chiave secret:
CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';Sostituisci quanto segue:
- STORAGE_CREDENTIAL_NAME: il nome della credenziale Cloud Storage che vuoi utilizzare.
- ACCESS_KEY_ID: l'ID chiave di accesso.
- SECRET_KEY_ID: l'ID chiave secret.
È supportata solo l'autenticazione di base.
Crea un'origine dati esterna.
CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME WITH ( LOCATION = 's3://storage.googleapis.com/', CREDENTIAL = STORAGE_CREDENTIAL_NAME );Sostituisci quanto segue:
- STORAGE_DATA_SOURCE_NAME: il nome dell'origine dati esterna in Cloud Storage.
- STORAGE_CREDENTIAL_NAME: il nome della credenziale per la risorsa di archiviazione esterna.
Crea una tabella esterna per Cloud Storage.
Definisci il formato e la struttura dei dati esterni:
- Crea il file esterno. Lo schema deve corrispondere alla struttura del file.
- Definisci le colonne con tipi di dati e regole di confronto SQL Server appropriati.
- La posizione è il percorso all'interno dell'origine dati.
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 );Sostituisci quanto segue:
- FILE_FORMAT_NAME: il nome del formato di file esterno che vuoi creare.
- FORMAT_TYPE: il tipo di formato che vuoi utilizzare, ad esempio
DELIMITEDTEXT. Per un elenco dei valori supportati, consulta Formati di file supportati. - FIELD_TERMINATOR: il delimitatore di campo che vuoi utilizzare.
- DELIMITER: il delimitatore di stringa che vuoi utilizzare.
- FIRST_ROW: la riga da cui vuoi iniziare a leggere.
- FILE_EXTERNAL_TABLE_NAME: il nome della tabella esterna che vuoi creare.
- COLUMN_NAME_1: il nome della prima colonna della tabella.
- DATA_TYPE_1: il tipo di dati della prima colonna.
- COLUMN_NAME_2: il nome della seconda colonna della tabella.
- DATA_TYPE_2: il tipo di dati della seconda colonna.
- PATH_TO_BUCKET: il percorso completo del bucket Cloud Storage.
- FILENAME: il nome del file che si trova all'interno del bucket Cloud Storage.
- STORAGE_DATA_SOURCE_NAME: il nome dell'origine dati esterna in Cloud Storage.
- FILE_FORMAT_NAME: il nome del formato di file esterno.
Esegui una query sulla tabella Cloud Storage esterna che hai creato.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;Sostituisci quanto segue:
- FILE_EXTERNAL_TABLE_NAME: il nome della tabella esterna su cui vuoi eseguire la query.
Gestire la chiave master del database dopo un'operazione di ripristino del database
Le credenziali con ambito database utilizzate per accedere alle origini dati esterne vengono criptate utilizzando una chiave master del database (DMK).
La DMK è criptata con la chiave master del servizio (SMK) dell'istanza di origine e la password DMK fornita dall'utente. Nell'istanza di origine, SQL Server apre silenziosamente la DMK utilizzando una SMK.
Se ripristini un'istanza Cloud SQL per SQL Server, la DMK non si aprirà automaticamente nella nuova istanza a causa delle modifiche alla SMK.
Di conseguenza, devi prima decriptare la DMK utilizzando la password utente stabilita durante la sua creazione e ricriptarla con la SMK dell'istanza di destinazione.
Per ulteriori informazioni, consulta le seguenti risorse Microsoft:
- Aprire una chiave master del database utilizzando una password
- Ruotare una chiave master del database
Log
I seguenti log di PolyBase sono disponibili in Esplora log:
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log
Per ulteriori informazioni, consulta la documentazione di Microsoft sulla risoluzione dei problemi di PolyBase.