• Nenhum resultado encontrado

Introdução ao SQL Server Replication

A ferramenta de replicação do SQL Server permite que a estrutura e os dados de uma determinada base sejam disseminados para outros meios, tais como outros servidores ou dispositivos móveis rodando SQL Server Compact Edition.

Existem diversos cenários onde a replicação é a melhor e mais simples solução para algum problema específico, entre estes cenários citamos dois casos distintos: Processamento Offline: Se você deseja manipular dados em uma máquina ou dispositivo móvel não conectado, a replicação pode ser utilizada para que o sincronismo seja feito apenas em momentos onde há conectividade.

Redundância: A ferramenta de replicação permite que você construa uma base "espelhada" da base de sua aplicação, o que permite que em algum momento de indisponibilidade ela tome o lugar da base de "produção" sem maiores dificuldades. Em qualquer cenário de replicação existem dois principais componentes, os Editores(

120 Publishers) e ao Assinantes (Subscribers).

Os Editores disponibilizam seus dados para outros servidores através de Artigos (Articles), um artigo é um objeto em uma base de dados, como por exemplo, VIEWS, TABELAS, e etc.

Os Assinantes consomem os dados dos editores, eles que recebem as atualizações quando há alguma modificação na base Editora. Lembrando que nada impede que uma base de dados seja Assinante e Editora ao mesmo tempo, na verdade isso é frequentemente utilizado.

Esse processo de "meio de campo" entre Editores e Assinantes é feito pelos Agentes(Agents).

O SQL Server suporta três diferentes tipos de replicação, Snapshot, Transactional e Merge Replication.O objetivo deste artigo é dar uma breve explicação sobre cada um deles para que você possa escolher qual tipo é mais adequado à sua realidade. Snapshot Replication: Como o próprio nome já sugere, ele simplesmente tira uma "foto" da base de dados replicada e compartilha essa "foto" com os seus Assinantes, em um processo longo e que consome muitos recursos do servidor, afinal é uma cópia completa de todos os artigos da Publicação, por esse motivo esse tipo de replicação não é utilizado em uma base de dados que sofre freqüentes alterações.

Transactional Replication: A replicação transacional é bem mais flexível do que a Snapshot, quando se trata de uma base de dados que sofre constantes alterações, nesse tipo de replicação o seu Agente monitora a base Editora esperando por

alterações e transmite somente essas alterações para os assinantes, de maneira muito mais otimizada e rápida do que a anterior.

Merge Replication: Permite que o Assinante e o Editor efetuem alterações independentes na base de dados, ambas as entidades podem trabalhar

desconectadas. No momento do sincronismo (com as bases conectadas obviamente) o Agente de Mesclagem(Merge Agent) checa as alterações feitas na Publicação e em cada um dos Assinantes e mescla as alterações de maneira que os dados fiquem solidificados.Entretanto neste processo de mesclagem podem ocorrer conflitos por diversos motivos, esses conflitos podem ser solucionados facilmente com um algoritmo de resolução de conflitos que determina os dados apropriados a serem mantidos na base.Este tipo de replicação é utilizado frequentemente utilizados em bases de dados SQL Server Compact Edition para dispositivos móveis os quais não estão constantemente conectados ao Editor.

Versões do SQL Server e suas limitações

Se você trabalha com o SQL Server 2005, você deve ficar atento a qual edição se adapta ao tipo de replicação que você necessita, porque em algumas versões há algumas limitações desta ferramenta como podemos ver a seguir.

Express Edition: Serve apenas como Assinante, não podendo Publicar nada. WorkGroup Edition: É limitado, pode servir para apenas 5 Assinantes com Transactional Replication e até 25 Assinantes com Merge Replication.

121 Standard Edition: Possui todas as funcionalidades de replicação ativadas.

Enterprise Edition: É a ferramente mais poderosa, é capaz de interagir fazendo replicação de dados tanto com SQL Server quanto com Oracle

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.

122 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.

123 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.

124 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)

125 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).

126 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).

127 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.

128 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.

129 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).

130 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).

131 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).

132 ú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).

133 Figura 15

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

134 Figura 16

Assinando uma Publicação Existente

Depois que a nossa publicação da base MERCADO foi criada com sucesso, iremos criar uma base de dados SQL Server Compact Edition para ser sua assinante.

A base de dados SQL Server CE é apenas um arquivo com a extensão “sdf”, apesar dessa extensão não ser obrigatória é altamente recomendada.

Aqui criamos uma base chamada “Mercado_Compact” e não setamos nenhuma senha, mas apenas para fins didáticos, na prática é extremamente necessária uma senha para dar segurança a sua base(Figura 17).

135 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

136 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)

137 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).

138 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).

139 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).

140 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.

Log Shipping