Introdução às consultas entre bancos de dados (particionamento vertical) (preview)
Aplica-se a:Banco de Dados SQL do Azure
A consulta de banco de dados elástico (visualização) para o Banco de Dados SQL do Azure permite executar consultas T-SQL que abrangem vários bancos de dados usando um único ponto de conexão. Este artigo se aplica a bancos de dados particionados verticalmente. Neste artigo, saiba como configurar e usar um Banco de Dados SQL do Azure para executar consultas que abrangem vários bancos de dados relacionados.
Para obter mais informações sobre o recurso de consulta de banco de dados elástico, consulte visão geral da consulta elástica do Banco de Dados SQL do Azure (versão prévia).
Pré-requisitos
A permissão ALTER ANY EXTERNAL DATA SOURCE é exigida. Essa permissão está incluída na permissão ALTERAR BANCO DE DADOS. As permissões para ALTERAR QUALQUER FONTE DE DADOS EXTERNA são necessárias para referenciar a fonte de dados subjacente.
Criar os bancos de dados de exemplo
Para começar, crie dois bancos de dados, Customers
e Orders
, seja nos mesmos servidores lógicos ou em servidores lógicos diferentes.
Execute as consultas a seguir no banco de dados Orders
para criar a tabela OrderInformation
e inserir os dados de exemplo.
CREATE TABLE [dbo].[OrderInformation](
[OrderID] [int] NOT NULL,
[CustomerID] [int] NOT NULL
)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (123, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (149, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (857, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (321, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (564, 8)
Agora, execute a consulta a seguir no banco de dados Customers
para criar a tabela CustomerInformation
e inserir os dados de exemplo.
CREATE TABLE [dbo].[CustomerInformation](
[CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NULL,
[Company] [varchar](50) NULL
CONSTRAINT [CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC)
)
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (1, 'Jack', 'ABC')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (2, 'Steve', 'XYZ')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (3, 'Lylla', 'MNO')
Criar objetos de banco de dados
Chave mestra e credenciais do escopo do banco de dados
Abra o SQL Server Management Studio ou o SQL Server Data Tools no Visual Studio.
Conecte-se ao banco de dados Orders e execute os seguintes comandos T-SQL:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>'; CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred WITH IDENTITY = '<username>', SECRET = '<password>';
- O
master_key_password
é uma senha forte de sua escolha usada para criptografar as credenciais de conexão. - O
username
epassword
devem ser o nome de usuário e a senha usados para entrar no banco de dados Clientes (crie um novo usuário no banco de dados Clientes se ainda não existir). - No momento, não há suporte para autenticação usando a ID do Microsoft Entra (antigo Azure Active Directory) com consultas elásticas.
- O
Fontes de dados externas
Para criar uma fonte de dados externa, execute o comando a seguir no banco de dados Orders
para se conectar ao banco de dados Customers
. Forneça o servidor lógico SQL do Azure para o banco de dados Customers
no LOCATION
.
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
(TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = ElasticDBQueryCred
);
Tabelas externas
Crie uma tabela externa no banco de dados Orders
, que corresponde à definição da tabela CustomerInformation
:
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
Consultas remotas
Utilize o procedimento armazenado sp_execute_remote para executar uma instrução Transact-SQL em um único banco de dados SQL remoto do Azure ou em um conjunto de bancos de dados que servem como shards em um esquema de particionamento horizontal. A consulta T-SQL remota a seguir retorna dados da tabela de OrderInformation
externa.
EXEC sp_execute_remote
N'MyElasticDBQueryDataSrc',
N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';
Executar uma consulta T-SQL no banco de dados elástico de exemplo
Depois de definir sua fonte de dados externa e suas tabelas externas, agora você pode usar o T-SQL para consultar suas tabelas externas. Execute esta consulta no banco de dados Orders
:
SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;
Custo
Atualmente, o recurso de consulta de banco de dados elástico está incluído no custo de seu Banco de Dados SQL do Azure.
Para saber mais sobre preços, consulte Preços do Banco de Dados SQL.
Conteúdo relacionado
- visão geral da consulta elástica do Banco de Dados SQL do Azure (versão prévia)
- Consulta em bancos de dados de nuvem com esquemas diferentes (versão prévia)
- Relatórios entre bancos de dados expandidos na nuvem (versão prévia)
- Relatórios em bancos de dados de nuvem expandidos (versão prévia)
- sp_execute_remote