Nesta página, mostramos como configurar e gerenciar fontes de dados externas para uso com o PolyBase e suas instâncias do Cloud SQL para SQL Server.
Gerenciar o acesso a objetos externos
O Cloud SQL oferece suporte apenas a operações para ativar e desativar o PolyBase. Os usuários precisam gerenciar manualmente as entidades do SQL Server usando instruções T-SQL.
Antes de gerenciar manualmente as entidades do SQL Server, consulte os seguintes recursos da Microsoft:
- Criar uma CHAVE MASTER usando T-SQL
- Configurar o PolyBase para acessar dados externos no Oracle
- Configurar o PolyBase para acessar dados externos no armazenamento de objetos compatível com S3
Criar uma fonte de dados externa
As etapas a seguir mostram como criar uma fonte de dados externa para sua instância do Cloud SQL para SQL Server.
O SQL Server define uma fonte de dados externa como um recurso com informações de conexão, como nome do servidor, nome do banco de dados e string de conexão.
O SQL Server define tabelas externas como objetos de metadados no SQL Server que apontam para os dados nas fontes de dados externas. Eles definem o esquema dos dados externos conforme serão apresentados no SQL Server.
Esse procedimento exige a criação de uma credencial no escopo do banco de dados (DSC) para sua fonte de dados externa.
Os DSCs armazenam as informações de autenticação necessárias para se conectar às fontes de dados externas. Essas credenciais são criptografadas pela chave mestra do banco de dados (DMK, na sigla em inglês).
A DMK serve como raiz da hierarquia de criptografia em um banco de dados, protegendo segredos em credenciais no escopo do banco de dados. Essa chave simétrica é criptografada pela chave mestra de serviço (SMK) e uma senha fornecida pelo usuário. O DMK não é criado automaticamente e exige gerenciamento explícito pelo usuário usando T-SQL.
A SMK serve como raiz da hierarquia de criptografia para uma instância específica do SQL Server. Essa chave simétrica é gerada automaticamente pelo próprio SQL Server na primeira vez que ele é iniciado e é usada para proteger outros objetos de segurança, como DMKs e senhas de login.
Oracle
Conclua as etapas a seguir no SQL Server.
Crie uma credencial no escopo do banco de dados (DSC) para o Oracle.
Se ainda não tiver um, mude para um banco de dados de usuário para criar uma chave mestra:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Substitua:
- USER_DB: o banco de dados de usuários que você quer usar para criar a chave mestra.
Por exemplo,
polybasedb. - MK_PASSWORD: a senha da chave mestra que você quer usar. Salve a senha da chave mestra para uso posterior.
- USER_DB: o banco de dados de usuários que você quer usar para criar a chave mestra.
Por exemplo,
Crie uma credencial no escopo do banco de dados para a fonte de dados do Oracle.
CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';Substitua:
- DB_CREDENTIAL_NAME: o nome da credencial que você quer usar para o banco de dados externo.
- EXTERNAL_DATABASE_USERNAME: o nome de usuário que você quer usar para acessar o banco de dados externo.
- EXTERNAL_DATABASE_PASSWORD: a senha do banco de dados externo. As credenciais da fonte de dados externa precisam ser atualizadas quando são trocadas e precisam ser gerenciadas manualmente por você.
Crie uma fonte de dados externa para o Oracle.
CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME WITH ( LOCATION = 'oracle://SERVER_IP:PORT', PUSHDOWN = PUSHDOWN, CREDENTIAL = DB_CREDENTIAL_NAME );Substitua:
- DATA_SOURCE_NAME: o nome que você quer usar para o banco de dados externo.
- SERVER_IP: o IP do servidor ou o nome do host.
- PORT: a porta que você quer usar.
- PUSHDOWN: obrigatório. O pushdown é um recurso oferecido no SQL Server e precisa ser configurado. Defina o valor como
ONouOFF, dependendo do seu caso de uso. - DB_CREDENTIAL_NAME: a credencial que você acabou de criar.
Crie uma tabela externa.
Defina o esquema e a estrutura dos dados externos:
- Crie a definição da tabela externa. O esquema precisa corresponder à tabela remota.
- Defina colunas com tipos de dados e agrupamentos apropriados do SQL Server.
- O local é o caminho da tabela 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 );Substitua:
- EXTERNAL_TABLE_NAME: o nome da tabela externa que você quer criar.
- COLUMN_NAME_1: o nome da primeira coluna da tabela.
- DATA_TYPE_1: o tipo de dados da primeira coluna.
- COLLATION_1: a ordenação que você quer usar para a primeira coluna.
- COLUMN_NAME_2: o nome da segunda coluna da tabela.
- DATA_TYPE_2: o tipo de dados da segunda coluna.
- COLLATION_2: a ordenação que você quer usar para a segunda coluna.
- REMOTE_DATABASE: o nome do banco de dados remoto.
- REMOTE_USERNAME: o nome de usuário do usuário remoto.
- REMOTE_TABLE_NAME: o nome da tabela remota.
- DB_DATA_SOURCE_NAME: o nome da fonte de dados externa.
Consulte a tabela externa do Oracle que você criou.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;Substitua:
- EXTERNAL_TABLE_NAME: o nome da tabela externa que você quer consultar.
Cloud Storage
Conclua as etapas a seguir no SQL Server.
Crie uma credencial no escopo do banco de dados para o Cloud Storage.
Se ainda não tiver um, mude para um banco de dados de usuário para criar uma chave mestra:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';Substitua:
- USER_DB: o banco de dados de usuários que você quer usar para criar a chave mestra.
Por exemplo,
polybasedb. - MK_PASSWORD: a senha que você quer usar para a chave mestra. Salve a senha da chave mestra para uso posterior.
- USER_DB: o banco de dados de usuários que você quer usar para criar a chave mestra.
Por exemplo,
O Cloud Storage exige um ID de chave de acesso e um ID de chave secreta:
CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';Substitua:
- STORAGE_CREDENTIAL_NAME: o nome da credencial do Cloud Storage que você quer usar.
- ACCESS_KEY_ID: o ID da chave de acesso.
- SECRET_KEY_ID: o ID da chave secreta.
Somente a autenticação básica é aceita.
Crie uma fonte de dados externa.
CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME WITH ( LOCATION = 's3://storage.googleapis.com/', CREDENTIAL = STORAGE_CREDENTIAL_NAME );Substitua:
- STORAGE_DATA_SOURCE_NAME: o nome da fonte de dados externa no Cloud Storage.
- STORAGE_CREDENTIAL_NAME: o nome da credencial do recurso de armazenamento externo.
Crie uma tabela externa para o Cloud Storage.
Defina o formato e a estrutura dos dados externos:
- Crie o arquivo externo. O esquema precisa corresponder à estrutura do arquivo.
- Defina colunas com tipos de dados e agrupamentos apropriados do SQL Server.
- O local é o caminho dentro da fonte de dados.
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 );Substitua:
- FILE_FORMAT_NAME: o nome do formato de arquivo externo que você quer criar.
- FORMAT_TYPE: o tipo de formato que você quer usar, como
DELIMITEDTEXT. Para uma lista de valores compatíveis, consulte Formatos de arquivos compatíveis. - FIELD_TERMINATOR: o delimitador de campo que você quer usar.
- DELIMITER: o delimitador de string que você quer usar.
- FIRST_ROW: a linha de onde você quer começar a leitura.
- FILE_EXTERNAL_TABLE_NAME: o nome da tabela externa que você quer criar.
- COLUMN_NAME_1: o nome da primeira coluna da tabela.
- DATA_TYPE_1: o tipo de dados da primeira coluna.
- COLUMN_NAME_2: o nome da segunda coluna da tabela.
- DATA_TYPE_2: o tipo de dados da segunda coluna.
- PATH_TO_BUCKET: o caminho completo para o bucket do Cloud Storage.
- FILENAME: o nome do arquivo localizado no bucket do Cloud Storage.
- STORAGE_DATA_SOURCE_NAME: o nome da fonte de dados externa no Cloud Storage.
- FILE_FORMAT_NAME: o nome do formato de arquivo externo.
Consulte a tabela externa do Cloud Storage que você criou.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;Substitua:
- FILE_EXTERNAL_TABLE_NAME: o nome da tabela externa que você quer consultar.
Gerenciar a chave mestra do banco de dados após uma operação de restauração
As credenciais com escopo do banco de dados usadas para acessar fontes de dados externas são criptografadas com uma chave mestra do banco de dados (DMK).
A DMK é criptografada com a chave mestra de serviço (SMK) da instância de origem e a senha da DMK fornecida pelo usuário. Na instância de origem, o SQL Server abre silenciosamente a DMK usando uma SMK.
Se você restaurar uma instância do Cloud SQL para SQL Server, a DMK não será aberta automaticamente na nova instância devido a mudanças na SMK.
Como resultado, primeiro é necessário descriptografar a DMK usando a senha do usuário estabelecida durante a criação e criptografá-la novamente com a SMK da instância de destino.
Para mais informações, consulte os seguintes recursos da Microsoft:
- Abrir uma chave mestra de banco de dados usando uma senha
- Fazer rotação de uma chave mestra de banco de dados
Registros
Os seguintes registros do PolyBase estão disponíveis no Análise de registros:
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log
Para mais informações, consulte a documentação da Microsoft sobre solução de problemas do PolyBase.