Banco de Dados - SQL Server

SQL Server Replication Passo-a-Passo

Este artigo é uma explicação passo-a-passo de como implementar uma replicação de dados do tipo Merge Replication utilizando o SQL Server 2005 e como “consumi-la” utilizando uma base de dados SQL Server Compact Edition.

por Cristian Fernandes



Este artigo é uma explicação passo-a-passo de como implementar uma replicação de dados do tipo Merge Replication utilizando o SQL Server 2005 e como “consumi-la” utilizando uma base de dados SQL Server Compact Edition.

Criando uma nova Publicação

Primeiramente iremos criar uma base de dados chamada MERCADO, e inserir duas tabelas com um relacionamento simples entre elas nesta base de dados: uma tabela de PRODUTOS e uma outra de CATEGORIAS de Produtos, podemos ver suas respectivas estruturas nas figuras 1 e 2.


Figura 1

Figura 2

O segundo passo é popular estas duas tabelas para que em um primeiro sincronismo com o “Subscriber” além da estrutura ser criada, já haja uma carga de dados inicial, as tabelas foram populadas manualmente conforme as figuras 3 e 4.

Figura 3

Figura 4

Agora sim, estando criada a nossa base de dados, iremos iniciar o processo de publicação desta base. Para isso devemos clicar com o botão direito do mouse em “Local Publications” dentro da pasta “Replication” no Object Explorer, como podemos ver na figura 5.

Figura 5

Se esta for a primeira vez que fizemos uma publicação no nosso servidor SQL ele irá mostrar as telas representadas nas figuras 6, 7 e 8. Estas telas somente aparecerão na primeira vez que uma publicação for feita em nosso servidor.

Na figura 6, iremos decidir se este servidor o qual estamos fazendo a publicação vai ser o seu próprio distribuidor ou se vai utilizar um servidor adicional (já configurado para ser distribuidor) para distribuir suas replicações.

Figura 6

Após, teremos que escolher o local onde ficarão os “Snapshots” gerados pela nossa publicação, é necessário que seja em um diretório publicado no IIS para que se possa obter acesso via rede interna ou até mesmo pela internet. (Figura 7)

Figura 7

A última tela de configuração da distribuição serve para que se possa escolher se o SQL Server Agent inicia automaticamente quando o computador for iniciado ou se você deseja iniciá-lo manualmente, observando que para que o Agent seja iniciado automaticamente, o usuário “SQL Server Service” deve ter permissões de administrador nesta máquina (Figura 8).

Figura 8

Tendo sido feitas as configurações de distribuição para a nossa replicação, apartir de agora iniciaremos o processo de publicação propriamente dito.

Primeiramente devemos escolher a base a qual vai ter seus dados replicados, neste caso a base é “MERCADO” (Figura 9).

Figura 9

Na próxima tela (Figura 10) podemos escolher entre todos os tipos de replicação do SQL Server, logo abaixo há uma descrição sucinta sobre o tipo selecionado (para maiores informações recomendo meu outro artigo “Introdução á SQL Server Replication”). Neste caso escolheremos Merge Replication.

Figura 10

Logo após esta etapa devemos escolher quais tipos de Banco de Dados podem acessar esta publicação (Figura 11).Como o foco do artigo é SQL Server Compact Edition, escolheremos somente este, mas poderíamos escolher juntamente todos os tipos necessários sem problema algum.

Figura 11

Na próxima tela devemos escolher os artigos (articles) que serão publicados, como só temos duas tabelas na nossa base, e elas têm um relacionamento então selecionaremos as duas tabelas (Figura 12).

Figura 12

A próxima tela é uma espécie de aviso, dizendo que serão adicionados aos campos das tabelas existentes uma coluna nova do tipo uniqueidentifier.(Figura 13).

Figura 13

Agora, temos a possibilidade de incluir filtros na publicação, para que sejam publicados apenas os registros que queremos. É possível fazer uma publicação dinâmica, como por exemplo, queremos que determinados produtos vão somente para a base de dados de um determinado vendedor então filtramos pelo HOST_NAME que deve ser único para cada base de dados SQL Server CE, além disso também há a possibilidade de publicar apenas algumas colunas específicas, muito úteis em aplicações Móveis onde o volume de dados deve ser menor, entretanto neste caso não aplicaremos filtros.

Depois devemos setar o Snapshot Agent para criar os primeiros Snapshots, neste momento, adicionalmente podemos Schedular horários para que ele gere novos Snapshots(Figura 14).

Figura 14

O último passo para a publicação é a seleção de um nome, neste caso como é a publicação da base MERCADO o nome será PUB_MERCADO.

Ao finalizar esta etapa será mostrada uma tela demonstrando o Status da publicação (Figura 15).

Figura 15

Pronto aí está a nossa publicação criada e pronta para receber assinantes(Figura 16).

Figura 16

Assinando uma Publicação Existente

Figura 17

Após a criação vamos abrir esta base no Microsoft SQL Server Management Studio, para isso selecionamos SQL Server Compact Edition como Server Type e localizamos o nosso arquivo Mercado_Compact.sdf no diretório em que o criamos(Figura 18).

Figura 18

O próximo passo é criar a Assinatura propriamente dita, para isso clicamos com o botão direito na pasta “Subscriptions” dentro de “Replication” e escolhemos a opção “New Subscription”.Note que temos apenas a opção de Subscription, isso ocorre porque a base de dados SQL Server Compact Edition não possui a opção de Publicação(Figura 19).

Figura 19

Agora selecionamos a publicação que queremos fazer a assinatura, neste caso é a PUB_MERCADO do servidor Solucoes1(Figura 20).

Figura 20

Depois colocamos um nome na assinatura, aqui colocamos “ASS_MERCADO”, note que há um campo para se setar o HOST_NAME, para que haja filtragem, como não estamos filtrando campo nenhum aqui é desnecessário preenche-lo.(Figura 21)

Figura 21

Depois desta etapa, devemos dizer qual é o diretório virtual onde está a publicação, aqui será a URL: http://10.10.100.140/replication que corresponde ao D:\Replication setado anteriormente no momento da configuração da distribuição.Selecionamos também que iremos nos conectar anonimamente ao Web Server(novamente para fins didáticos OK?)(Figura 22).

Figura 22

Agora teremos que setar os dados para conexão com a base remota, aqui usaremos o usuário “sa” e sua respectiva senha (Figura 23).

Figura 23

Após essas pequenas configurações de acesso, e nos mostrado um breve resumo dos dados de acesso a publicação e são demonstrados dois exemplos de código, um em C# e um em VB.NET para que essas configurações sejam feitas programaticamente, em uma aplicação Windows Mobile por exemplo (Figura 24).

Figura 24

Após essas configurações, criação de publicação e de assinatura, basta que sincronize a assinatura, clicando-se com o botão direito sobre ela e “Syncronize”, pronto pode verificar as tabelas que tudo estará lá, dados, estrutura e tudo mais.

Agora ao se criar um novo registro nesta base SQL Server CE e mandar que seja feito o sincronismo novamente, como um passe de mágica esse registro estará na base publicada e os novos registros incluídos na base publicada estarão disponíveis na base .sdf. Esta é a Merge Replication, tipo de replicação que mescla dados da publicação e dos assinantes.

Espero ter contribuído e abraços,

Cristian Fernandes
Cristian Fernandes

Cristian Fernandes - Desenvolvedor de sistemas Web desde 2003 utilizando ASP e .NET, trabalha também com dispositivos móveis(Pocket PC e PALM) desde 2005 com C, C++ e C#.
Graduando em Ciência da Computação pela UNISINOS-RS.
Atualmente trabalha como desenvolvedor na empresa Pmweb de Porto Alegre.