Configurar o PolyBase para acessar dados externos no SQL Server
Aplica-se: SQL Server
Este artigo explica como usar o PolyBase em uma instância do SQL Server para consultar dados externos em outra instância do SQL Server.
Pré-requisitos
Se você ainda não instalou o PolyBase, veja Instalação do PolyBase. O artigo sobre a instalação explica os pré-requisitos. Uma vez instalado, certifique-se também de habilitar o PolyBase.
A fonte de dados externa do SQL Server usa a Autenticação SQL.
Antes de criar um banco de dados de credencial no escopo, uma chave mestra deve ser criada.
Configurar uma fonte de dados externa do SQL Server
Para consultar os dados de uma fonte de dados do SQL Server, você precisa criar tabelas externas para fazer referência aos dados externos. Esta seção fornece código de exemplo para criar essas tabelas externas.
Para obter um desempenho de consulta ideal, crie estatísticas em colunas de tabelas externas, especialmente aquelas usadas para junções, filtros e agregações.
Os seguintes comandos Transact-SQL são usados nesta seção:
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE EXTERNAL TABLE (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
Crie uma credencial no escopo do banco de dados para acessar a fonte do SQL Server. O exemplo a seguir cria uma credencial para a fonte de dados externa com
IDENTITY = 'username'
eSECRET = 'password'
.CREATE DATABASE SCOPED CREDENTIAL SqlServerCredentials WITH IDENTITY = 'username', SECRET = 'password';
Importante
O Conector ODBC do SQL para PolyBase dá suporte apenas à autenticação Básica, não à autenticação Kerberos.
Crie uma fonte de dados externa, usando CREATE EXTERNAL DATA SOURCE. O exemplo a seguir:
- Cria uma fonte de dados externa nomeada como
SQLServerInstance
. - Identifica a fonte de dados externa (
LOCATION = '<vendor>://<server>[:<port>]'
). No exemplo, ele aponta para uma instância padrão do SQL Server. - Identifica se a computação deve ser enviada por push para a origem (
PUSHDOWN
).PUSHDOWN
éON
por padrão.
Por fim, o exemplo usa a credencial criada anteriormente.
CREATE EXTERNAL DATA SOURCE SQLServerInstance WITH ( LOCATION = 'sqlserver://SqlServer', PUSHDOWN = ON, CREDENTIAL = SQLServerCredentials);
- Cria uma fonte de dados externa nomeada como
Crie a tabela externa com CREATE EXTERNAL TABLE. A instrução exige uma ordenação, e a localização exige uma notação de três 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);
Opcionalmente, crie estatísticas em uma tabela externa.
Para obter um desempenho de consulta ideal, crie estatísticas em colunas de tabelas externas, especialmente aquelas usadas para junções, filtros e agregações.
CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
WITH FULLSCAN;
Importante
Depois de criar uma fonte de dados externa, você pode usar o comando CREATE EXTERNAL TABLE para criar uma tabela que possa ser consultada por essa fonte.
Tipos compatíveis com o conector do SQL Server
Você também pode usar o conector do SQL Server (sqlserver://) para acessar o Banco de Dados SQL do Azure. Para realizar essa tarefa, siga as mesmas etapas listadas anteriormente. Verifique se a credencial com escopo de banco de dados, o endereço do servidor, a porta e a cadeia de localização estão correlacionados com os da fonte de dados do Banco de Dados SQL do Azure à qual você deseja se conectar.
Próximas etapas
Para obter mais tutoriais sobre como criar fontes de dados externas e tabelas externas para uma variedade de fontes de dados, consulte Referência do PolyBase Transact-SQL.
Para saber mais sobre o PolyBase, consulte Visão geral do PolyBase do SQL Server.