Published on

May 12, 2017

Executando consultas entre bancos de dados no SQL Server

Uma pergunta comum que frequentemente me deparo é como executar consultas entre bancos de dados no SQL Server. Muitas pessoas acreditam que não é possível realizar tais consultas, mas graças a um recurso chamado “Consulta Elástica”, isso é de fato possível. Neste post do blog, explicarei como configurar e executar consultas entre bancos de dados usando a Consulta Elástica.

Tipos de consultas entre bancos de dados

Existem vários tipos de consultas entre bancos de dados que você pode executar usando a Consulta Elástica:

  1. Consultas horizontais: Essas consultas são executadas em um conjunto de bancos de dados que possuem o mesmo esquema. Os dados são particionados em vários bancos de dados, e as consultas são roteadas para o banco de dados correto com base em um mapa de fragmentos. Essa técnica é comumente conhecida como “sharding”.
  2. Consultas verticais: Essas consultas são executadas em bancos de dados que possuem esquemas e conjuntos de dados diferentes. Você pode executar uma consulta vertical em qualquer duas instâncias do SQL Server.
  3. Consultas T-SQL do SQL Server para o SQL Data Warehouse: Esse recurso permite que você emita consultas do SQL Server para o SQL Data Warehouse. Observe que esse recurso está atualmente em fase de planejamento e ainda não está disponível.

Configurando consultas verticais elásticas

Neste exemplo, configuraremos uma Consulta Elástica que consulta tabelas diferentes em duas instâncias diferentes do SQL Server. Vamos supor que temos dois bancos de dados, “Database1” e “Database2”, que estão no mesmo servidor. No entanto, eles também podem estar em servidores separados. Os bancos de dados contêm tabelas do banco de dados AdventureWorksLT.

Para configurar as consultas verticais elásticas, siga estas quatro etapas:

  1. Crie uma Chave Mestra: A Chave Mestra é usada para proteger a Credencial Escopada do Banco de Dados. Você pode criar uma chave mestra usando a seguinte instrução SQL:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<sua senha aqui>';
  1. Crie uma Credencial Escopada do Banco de Dados: A credencial escopada do banco de dados contém as credenciais usadas para se conectar à fonte de dados externa. Você pode criar uma credencial escopada do banco de dados usando a seguinte instrução SQL:
CREATE DATABASE SCOPED CREDENTIAL <nome da credencial> WITH IDENTITY = '<nome de usuário>', SECRET = '<senha para o nome de usuário>';
  1. Crie uma Fonte de Dados Externa: A fonte de dados externa especifica a localização e as credenciais do banco de dados externo. Você pode criar uma fonte de dados externa usando a seguinte instrução SQL:
CREATE EXTERNAL DATA SOURCE <nome da fonte de dados externa> WITH (TYPE = RDBMS, LOCATION = '<servidor>', DATABASE_NAME = '<nome do seu banco de dados>', CREDENTIAL = <nome da credencial>);
  1. Crie uma Tabela Externa: A tabela externa define a estrutura da tabela no banco de dados externo. Você pode criar uma tabela externa usando a seguinte instrução SQL:
CREATE EXTERNAL TABLE [Esquema].[NomeDaTabela] (
  [Coluna1] [TipoDeDado] NOT NULL,
  [Coluna2] [TipoDeDado] NOT NULL,
  ...
) WITH (DATA_SOURCE = <nome da fonte de dados externa>);

Depois de criar as tabelas externas, você pode vê-las listadas na pasta Tabelas Externas no SQL Server Management Studio (SSMS).

Consultando Tabelas Externas

Após a configuração estar concluída, você pode começar a executar consultas entre bancos de dados. Existem duas maneiras de consultar tabelas externas:

  1. Escreva uma instrução SELECT: Você pode escrever uma instrução SELECT básica usando a tabela externa da mesma forma que faria com qualquer outra tabela física.
  2. Use sp_execute_remote: Você pode usar o procedimento armazenado sp_execute_remote para executar instruções T-SQL ou procedimentos armazenados externos no banco de dados remoto.

Aqui estão exemplos de ambos os métodos:

SELECT * FROM [Esquema].[NomeDaTabela];
EXEC sp_execute_remote N'<nome da fonte de dados externa>', N'SELECT * FROM [Esquema].[NomeDaTabela]';

Uma vantagem de usar consultas externas é que os predicados de filtro podem ser enviados para a fonte de dados remota. Isso significa que a filtragem é realizada no banco de dados remoto, reduzindo a quantidade de dados transferidos pela rede.

Conclusão

A Consulta Elástica no SQL Server permite que você execute consultas entre bancos de dados, permitindo que você acesse e analise dados de vários bancos de dados. Seguindo as etapas descritas neste post do blog, você pode configurar e executar consultas verticais elásticas. Aproveite esse recurso poderoso para aprimorar suas capacidades de análise de dados no SQL Server.

Se você tiver alguma ideia ou feedback sobre o uso da Consulta Elástica no SQL Server, adoraria ouvir sobre isso. Sinta-se à vontade para compartilhar suas experiências e quaisquer dicas ou truques que você tenha descoberto.

Recursos:

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.