O Sistema de Gerenciador de Banco de Dados Distribuídos (SGBDD) nos permite gerenciar um grande volume de informações geradas nos dias atuais através da combinação das redes e tecnologias de banco de dados.
Para a implantação de um sistema de banco de dados distribuídos se faz necessário o preenchimento de alguns requisitos como: garantir desempenho, escalabilidade e confiabilidade nos processos de fragmentação e de replicação.
Fragmentos são a unidades (linhas/colunas) extraídas de um processo de distribuição e o fator mais significativo para o desempenho de um DDBMS.
Este artigo demonstra a técnica de reconstrução de fragmentos verticais usando o Microsoft SQLServer.
As seguintes tarefas serão necessárias para o desenvolvimento deste trabalho:
- Instalação de duas instâncias do SQL Server uma local outra remota.
- Criação dos fragmentos (Banco de Dados, relacionamento entre tabelas para reconstrução).
- Configurar os servidores para funcionar remotamente.
- Criar usuários de Banco de Dados com privilégio apropriado para obter o acesso remoto.
- Adicionar servidores “linkados”.
- Executar as Queries para reconstruir e processar a requisição do usuário.
Instalação de duas instâncias do SQL Server.
Foram instaladas duas instâncias do SQL Server 2008 R2 em uma mesma máquina, simulando um banco local e outro remoto. O nome das instâncias são CLEBERSON-PC (Figura 1) e CLEBERSON-PC\SharePoint (Figura 2), instâncias local e remota, respectivamente.

Figura 1 – Instância Local

Figura 2 – Instância Remota
Criação dos fragmentos
Três fragmentos de uma tabela com informações sobre produtos foram inseridas em dois servidores. No servidor local está localizado o 1º Fragmento (Figura 1) enquanto que em outro servidor (remoto) estão os fragmentos 2 e 3 (Figura 2).
O banco criado na instância CLEBERSON-PC recebeu o nome de Local_DB enquanto que a instância CLEBERSON-PC\SharePoint recebeu o nome de Remote_DB. A Figura 3 exibe como ficou a divisão de atributos dos fragmentos. Nas Figuras 4 a 9 você confere a descrição dos dados e suas visualização.

Figura 3 – Distribuição dos Dados Fragmentados

Figura 4 - Descrição dos tipos de dados do fragmento 1

Figura 5 - Dados inseridos no Fragmento 1.

Figura 6 - Descrição dos tipos de dados do fragmento 2.

Figura 7 - Dados inseridos no Fragmento 2.

Figura 8 - Descrição dos tipos de dados do fragmento 3

Figura 9 - Dados inseridos no Fragmento 3.
Configurando os servidores para funcionar remotamente.
Configurar um servidor para trabalhar remotamente inclui as seguintes tarefas a seguir.
Abrir o SQL Server Management Studio e logar usando a Autenticação do Windows (Windows Authentication) (Figura 10).
Habilitar o SQL Server authentication juntamente com a autenticação do Windows.

Figura 10 – Login usando a autenticação do Windows
Em Object Explorer (Figura 11), com o botão direito clique sobre a instância remota (CLEBERSON-PC\SharePoint), e depois em propriedades.

Figura 11 – Habilitar o SQL Server Authentication
Na janela que se abrirá clique em Security, em Server authentication selecione "SQL Server and Windows Authentication mode" e clique em Ok (Figura 12).

Figura 12 - Habilitando o SQL Server Authentication
Habilitando Protocolos e SQL Server Bowser
Abra o SQL Server Configuration Manager, expanda o SQL Server Network Configuration, e clique em Protocols for MSSQLSERVER (ou outra instância).
Habilite todos os protocolos da lista a direita, conforme a Figura 13.

Figura 13 - Habilitando protocolos de rede
Após a etapa anterior, expanda SQL Native Client XX.X Configuration, e clique em Client Protocols. Habilite todos os protocolos da lista a direita, conforme a Figura 14.

Figura 14 - Habilitando protocolos de cliente
Clique em SQL Server Services, dê um duplo clique em SQL Server Browser (Figura 15), na próxima janela clique na aba Service, selecione a opção Start ModeAutomatic, clique em Aply, e depois em Ok (Figura 16).

Figura 15 - Opções do Server Browser

Figura 16 - Start Mode em modo automático
Criando um usuário com permissão para acesso remoto.
Passo 1- Criando um usuário.
Faça o Login usando a instância local SQL Server (CLEBERSON-PC) e utilizando a autenticação do windows.
Na janela Object Explorer, abra a pasta Security, clique com o botão direito sobre a pasta Logins e depois em New Login (Figura 17).

Figura 17 - Criando um Usuário
Na janela New Login, no campo Login Name atribua um nome (neste artigo, cleberson_pc), selecione a opção SQL Server authentication. Insira uma senha e a confirme.
A senha deverá ter letras e números. Desmarque a opção Enforce password expiration e User must change password at next login. Então mude Default database para local_db (Figura 18).

Figura 18 - Criando um Usuário
O próximo passo será fazer o mapeamento para o usuário criado, na janela do lado esquerdo clique em User Mapping. EmUsers mapped to this login:,selecione a caixa de texto para atribuir o banco Local_DB ao usuário criado em passos anteriores. Após isso no campo Database role membership for:, selecione db_owner e clique em Ok (Figura 19).

Figura 19 - Criando um Usuário
O novo usuário deverá ser adicionado ao banco de dados. Para checar, vá à janela Object Explorer, selecione o banco de dados Local_DB, abra a pasta Security e depois abra a pasta Users, veja se o usuário recém criado aparece na lista de usuários para o banco de dados (Figura 20).

Figura 20 - Visualizando um Usuário
Agora devemos verificar algumas propriedades que devem ser atribuídas ao usuário "db_owner". Para isso dê duplo clique sobre o usuário (neste exemplo, cleberson_pc), e na janela que se abrirá verifique se db_owner está selecionado em ambos os campos, Schemes owned by this usereDatabase role membership. Feito isso clique em OK (Figura 21).

Figura 21 - Verificando um Usuário
Passo 2 – Atribuição do privilégio dos ysadmin.
Abra a pasta Security do servidor, ao expandir a pasta Server Roles, encontre sysadmin, em seguida, com o botão direito clique sobre ele e depois em Properties (Figura 22).

Figura 22 - Editando regras do servidor
A janela Server Role Properties – sysadmin aparecerá. Nesta janela, clique no botão Add, e na janela Select Loginsclique em Browse (Figura 23), selecione o usuário cleberson_pc para adicioná-lo e depois clique em Ok em todas as janelas que seguirem (Figura 24).

Figura 23 - Procurando usuário

Figura 24 - Selecionando um usuário
Siga os passos 1 e 2 para o outro servidor (CLEBERSON-PC\SHAREPOINT).
Adicionando um Linked Server
Como definido anteriormente, o servidor CLEBERSON-PC é local e o servidorCLEBERSON-PC\SHAREPOINT será acessado do servidor CLEBERSON-PC. Sendo assim, CLEBERSON-PC\SHAREPOINT precisa ser adicionado localmente.
Abra a pasta Server Object localizada abaixo do servidor local, com o botão direito clique sobre a pasta Linked Servers, em seguida clique em New Linked Server...(Figura 25) e a janela New Linked Server aparecerá.

Figura 25 - Adicionando um Linked Server
No campo Linked Server, insira o nome da instância (servidor) remoto, CLEBERSON-PC\SHAREPOINT. Selecione a opção SQL Server em Server Type (Figura 26).

Figura 26 - Adicionando um novo linked server.
Na lista localizada a esquerda, clique em Security,e nas opções abaixo selecioneBe made using this security contexte entre com o Login e Senha (criado na instância SQL CLEBERSON-PC\SHAREPOINT) respectivamente nos campos Remote logineWith password, clique em Ok (Figura 27).

Figura 27 - Novo Linked Server
Queries para reconstruir e processar a requisição do usuário.
O script abaixo usa o comando LEFT JOIN para unir as tabelas fragmentadas verticalmente onde o Fragmento_1 está localizado no servidor local e o Fragmento_2 está em um servidor remoto (Listagem 1).
A função UNION é a responsável por unificar as tabelas fragmentadas verticalmente (Fragmento_1 e Fragmento_2) e o Fragmento_3 funcionando como uma fragmentação horizontal. O resultado você confere na Figura 28.
Listagem 1 – União de Tabelas utilizando left join
SELECT FRAGMENTO_1.PRODUTO_ID ,NOME, CATEGORIA,SUB_CATEGORIA,FABRICANTE,--Dados do servidor local
FRAGMENTO_2.PRECO, ORIGEM, COR, TAMANHO
--Dados do servidor remoto
FROM
(
[CLEBERSON-PC\Sharepoint].Remote_DB.dbo.FRAGMENTO_2
-- Servidor remoto
LEFT JOIN Local_DB.dbo.FRAGMENTO_1 -- Servidor Local
ON FRAGMENTO_2.PRODUTO_ID = FRAGMENTO_1.PRODUTO_ID
--Verifica se o ID dos produtos são iguais
)
UNION
SELECT * FROM [CLEBERSON-PC\SharepoinT].Remote_DB.dbo.FRAGMENTO_3
-- Exibe os dados do fragmento 3 no servidor remoto
<p align="left">GO 
Figura 28 - Exibição dos Fragmentos
A técnica exibida neste artigo é um exemplo básico de reconstrução. Na prática, muitas aplicações podem acessar muitas Views que foram criadas de várias tabelas, muitas vezes de diferentes fontes e em alguns casos rodando outros SGBDs como Postgree, Oracle, MySQL e Microsoft SQL Server. Mas o conceito básico é o mesmo para todos os casos.