Você está em: Principal › Artigos › SQL Server 2005 › Capítulo 08 : 09
Lição 129 - Capítulo 08 - Os Agentes criados para a replicação em SERVIDOR\SQL2005
Vamos conferir quais os jobos que foram criados na instância SERVIDOR\SQL2005, para dar suporte à replicação do tipo Snapshot que configuramos nos exercícios anteriores. Para isso utilizaremos a opção SQL Server Agent -> Jobs, da instância SERVIDOR\SQL2005. Também iremos verificar o histórico de execução destes agentes, para sabermos se a replicação já está sendo efetuada com sucesso.
Exemplo prático: Para verificar quais jobs foram criados e verificar o histórico de execução dos jobs relacionados com a replicação, siga os passos indicados a seguir:
3. Dê um clique no sinal de + ao lado da opção SQL Server agent, para expandir esta opção.
4. Dê um clique no sinal de + ao lado da opção Jobs, abaixo de SQL Server Agent, para exibir a lista de Jobs disponíveis.
5. Observe que temos uma série de Jobs relacioandos com a Replicação, conforme pode ser indicado pelo nome dos Jobs. Observe que vários jobs tem , em alguma parte do nome, termos relacionados a replicação, tais como Subscription, Replication, Distribution e assim por diante.
6. Na Figura 8.36 você pode conferir a lista de Jobs da instância SERVIDOR\SQL2005:
Figura 8.36 Lista de Jobs criados para dar suporte à Replicação.
Agora vamos verificar o histórico de execução de um dos Jobs - Replication agents checkup.
9. Dê um clique com o botão direito do mouse no Job Replication agents checkup. No menu que surge, dê um clique na opção View History.
É exibida a janela com informações detalhadas, sobre todo o Histórico de execuções do Job, conforme indicado na Figura 8.37. No nosso exemplo, observe que o Job já foi executado diversas vezes. Para cada execução é informada a data e hora de início da execução do Job (lembrando que um mesmo Job pode conter mais de um comando, para execução).
Figura 8.37 A janela com o histórico de execução do Job.
Para ver mais detalhes sobre uma execução do Job, dê um clique no sinal de +, ao lado da data e hora de execução do job.
Você pode filtrar o histórico de execução, para exibir apenas as ocorrências que atendam a determinados critérios, tais como uma data inicial e uma data final. Para isso, clique no botão Filter. Será aberta a janela Filter Settings. Defina os critérios de filtragem desejados, como no exemplo da Figura 8.38, onde estou definindo que sejam exibidas apenas as execuções para o período de 09/05/2005 a 10/05/2005. Marque a opção Apply Filter e clique em OK. Pronto, o histórico de execução será filtrado, para exibir somente as execuções que atendam os critérios especificados.
Figura 8.38 Opções para filtrar o histórico de execução do Job.
10. Dê um clique no botão Close para fechar a janela do histórico de execução do Job.
11. Você estará de volta ao SQL Server Management Studio. Mantenha-o aberto.
Lembre que o nosso agente está programado, ou melhor, agendado para executar de duas em duas horas. Ao executar, o agente transmite toda a publicação Minha Publicação do Publisher (que no nosso exemplo é a instância SERVIDOR\SQL2005) para o Distributor ((que no nosso exemplo também é a instância SERVIDOR\SQL2005). Devemos observar que é transmitida toda a Publicação e não somente os dados que foram alterados, pois estamos utilizando uma replicação do tipo Snapshot replication. Ou seja, a cada replicação, o conjunto completo de dados é replicado e não somente o que foi alterado, adicionado ou excluído entre uma replicação e outra. Esta é a principal característica da replicação Snapshot Replication.
Podemos fazer com que um ou mais dos Jobs sejam executados imediatamente, antes mesmo do agendametno programado. Para isso basta clicar com o botão direito do mouse no job e, no menu de opções que é exibido, clicar em Start Job. Também convém lembrar que para a replicação do tipo Snapshot replication, o Snapshot agent roda no Distributor. Quando o agente é executado, o agente se conecta com o Publisher e copia os dados do Publisher para o Distributor.
Já vimos que, ao habilitarmos a replicação, uma série de modificações foram feitas em SERVIDOR\SQL2005. Agora vamos verificar se os dados foram realmente replicados para o Banco de Dados ExReplicacao da instância SERVIDOR2\CURSOSJB. Os dados já devem ter sido replicados, pois conforme conferimos no histórico de replicação, os jobs responsáveis pela replicação executaram com sucesso. Mas nunca é demais dar uma conferida.
Também cabe lembrar que, na publicação Minha Publicação, que foi criada para a replicação, temos apenas três Artigos. Somente os dados dos Artigos que fazem parte da Publicação é que são replicados e não todo o Banco de Dados AdventureWorks. Apenas para recordar, os Artigos da Publicação1 estão definidos conforme indicado a seguir:
Exemplo prático: Para verificar se os dados estão sendo replicados com sucesso, para o banco de dados ExReplicacao, da instância SERVIDOR2\CURSOSJB, siga os passos indicados a seguir:
2. Verifique se a instância SERVIDOR2\CURSOSJB aparece na lista de instâncias registradas, na janela Registered Servers. Esta instância certamente já deve aparecer, se não você não teria conseguido criar a Subscrição, em um dos exemplos anteriores. Se por algum motivo, esta instância não estiver aparecendo, clique com o botão Direito do mouse em Microsoft SQL Servers, na janela Registered Servers e, no menu de opções que é exibido, clique em New -> Server Registration..., para registrar a instância SERVIDOR2\CURSOSJB.
3. Na janela Object Explorer, dê um clique no sinal de + ao lado da instância SERVIDOR2\CURSOSJB, para exibir as opções disponíveis.
4. Abaixo de SERVIDOR2\CURSOSJB, dê um clique no sinal de +, ao lado da opção Databases..
5. Nas opções que são exibidas, observe que o banco de dados ExReplicação já é exibido na lista de banco de dados, conforme indicado na Figura 8.39. Este é um indicativo de que a replicação já foi executada, pelo menos uma vez, com sucesso.
Figura 8.39 O banco de dados ExReplicacao.
6. Dê um clique no sinal de + ao lado de ExReplicacao, para exibir os objetos deste Banco de Dados.
7. Dê um clique no sinal de + ao lado da opção Tables, para exibir as tabelas do Banco de Dados ExReplicacao. Observe que, além da opção System Tables, são exibidas três outras tabelas, justamente as tabelas criadas pela replicação:
O nome das tabelas no Banco de Dados de destino, não precisa ser igual ao nome no Banco de Dados de origem. Lembre que esta opção é configurada quando criamos a publicação. Para maiores detalhes, consulte o exercício, neste capítulo, onde criamos a publicação Minha Publicação.
8. Clique com o botão direito do mouse no banco de dados ExReplicação e, no menu de opções que é exibido, clique em New Query. Será exibida a janela de Execução de comandos T-SQL. Execute o seguinte comando:
Observe que somente temos endereços para a cidade de Redmond. Isso confirma que o filtro que colocamos no artigo Art_Redmond, está funcionando corretamente. Apenas para lembrar, durante a criação da publicação Minha Publicação, definimos o seguinte filtro, para o artigo que publica a tabela Address: City = 'Redmond'. Observe que o filtro está sendo aplicado, pois somente estão sendo replicados, os registros da tabela Address, onde City='Redmond'. Pelo jeito funciona mesmo.
9. Mantenha a janela de execução de comandos T-SQL aberta. Vamos utilizá-la logo em seguida.
Vamos também conferir se a replicação da tabela Employee está funcionando corretamente. Lembre que, para esta tabela, definimos um filtro vertical, onde somente devem ser replicados os seguintes campos:
10. Execute o seguinte comando:
Observe que somente foram replicados os campos EmployeeID, NationalIDNumber, DepartmentID, ManagerID e EmergencyContactID, conforme indicado na Figura 8.40:
Figura 8.40 Filtro vertical para a tabela Employee.
Isto comprova que o nosso filtro vertical está funcionando corretamente.
11. Feche a janela de execução de comandos T-SQL. Se for emitida uma mensagem, perguntando se você deseja salvar os comandos, clique em No
Know-how em: Configurar Subscrições do Tipo Pull Subscriptions
Ter criado Publicações no item anterior.
Apresentação dos comandos e assistentes para configuração de subscrição do tipo Pull subscription.
Configurar uma subscrição do tipo Pull subsciption utilizando o SQL Server Management Studio.
Pull subscriptions são configuradas no Subscriber, ou seja, é o Subscriber que tomará a iniciativa de solicitar que a replicação seja iniciada e os dados sejam enviados do Distributor para o Subscriber. Pull significa puxar, ou seja, o subscriber "puxa" os dados que estão no distributor.
Com este tipo de subscrição deixamos o controle e o agendamento da replicação a cargo de cada Subscriber. A administração fica mais distribuída mas, ao mesmo tempo, damos maior liberdade para cada Subscriber. Outro fato importante é que os agentes de replicação rodam no Subscriber, o que alivia a carga no Distributor. Por exemplo, localidades ligadas por links mais lentos podem programar a replicação em períodos mais espaçados (maior latência na atualização dos dados). Este tipo de subscrição também é indicada para usuários móveis. Por exemplo, um vendedor que, ao atender o cliente, conecta-se à rede da empresa, utilizando uma linha telefônica e "dispara" uma replicação (puxa) para atualizar uma tabela de preços ou um catálogo de produtos e promoções.
Para Pull subscriptions o agente de replicação roda no Subscriber, consumindo memória e processador deste equipamento. Vamos a um exemplo prático.
Exemplo prático: Vamos criar uma subscrição do tipo Pull subscription em SERVIDOR2\CURSOSJB. Esta subscrição será baseada na publicação Minha Publicação, criada anteriormente, no Publisher SERVIDOR\SQL2005. Os dados repicados serão armazenados no Banco de Dados ExPullReplication, o qual será criado durante o processo de configuração da subscrição. Agendaremos esta subscrição para replicar diariamente, de 6 em 6 horas. Neste exemplo o Publisher é a instância SERVIDOR\SQL2005 e o Subscriber é a instância SERVIDOR2\CURSOSJB. Quem iniciará a replicação é a instância SERVIDOR2\CURSOSJB, pois é uma Pull subscription. Dizemos que a instância SERVIDOR2\CURSOSJB "puxa" os dados do Distributor.
Para criar a subscrição do tipo Pull subscription solicitada, siga os passos indicados a seguir:
2. Certifique-se de que a instãncia SERVIDOR2\CURSOSJB esteja registrada no SQL Server Management Studio. Se esta instância ainda não estiver registrada, registre-a, seguindo os passos já descritos nos exemplos anteriores.
3. Na janela Object Explorer, dê um clique no sinal de + ao lado da instância SERVIDOR2\CURSOSJB, para exibir as opções disponíveis nesta instância.
4. Clique com o botão direito do mouse na opção Replication e, no menu de opções que é aberto, clique em New -> Subscriptions...
5. Será aberto o assistente para criação de novas subscrições – New Subscription Wizard. A primeira tela do assistente é somente informativa. Clique em Next, para seguir para a próxima etapa do assistente.
6. Nesta etapa você deve selecionar a publicação para a qual será criada uma nova subscrição. Na lista Publisher, selecione a instância SERVIDOR\SQL2005 (pois é neste instância que está a publicação Minha Publicação, para a qual estamos criando uma Subscrição). Se não veio selecionada esta instância, selecione-a. Na parte de baixo da janela serão exibidas as publicações disponíveis (no nosso exemplo somente será exibida a publicação Minha Publicação). Clique na publicação Minha Publicação, para selecioná-la, conforme indicado na Figura 8.41:
Figura 8.41 – A publicação Minha Publicação, criada anteriormente.
7. Clique em Next, para seguir para a próxima etapa do assistente.
8. Nesta etapa você irá definir se o assistente irá criar uma ou mais subscrições do tipo Push subscriptions (onde os agentes de replicação rodam no Distributor), ou se serão subscrições do tipo Pull subscriptions (onde os agentes de replicação rodam nos subscribers). Usando o assistente você pode criar várias subscrições, de uma só vez, mas todas do mesmo tipo, ou seja, ou todas Pull subscriptions ou todas Push subscriptions. Se você precisar criar subscrições de diferentes tipos, terá que rodar o assistente mais de uma vez. Certifique-se de que a opção (pull subscriptions) esteja selecionada
9 . Clique em Next, para seguir para a próxima etapa do assistente.
10 . Nesta etapa você pode adicionar uma ou mais instâncias do SQL Server 2005, as quais serão subscribers da publicação Minha Publicação. Por padrão, somente a própria instância, na qual estamos trabalhando, é exibida na lista. No nosso exemplo, por padrão somente a instância SERVIDOR2\CURSOSJB, que é onde estamos trabalhando, está sendo exibida. Certifique-se de que somente esta instância esteja selecionada. Na coluna Subscription database, você deve informar se os dados serão replicados para um banco de dados já existente ou para um novo banco de dados. Para o nosso exemplo, na coluna Subscription Database, selecione a opção <New database...>.
11 . Será aberta a janela para criação de um novo banco de dados, janela esta que você aprendeu a utilizar no Capítulo 3. Utilizando os conhecimentos do Capítulo 3, crie um banco de dados com as seguintes características (é importante salientar que, antes de criar este banco de dados, a pasta C:\livrosql\Ex2Replicacao já deve ter sido criada, caso contrário será gerado um erro, quando o SQL Server 2005 tentar criar o banco de dados. Se esta pasta ainda não existe, abra o Windows Explorer e crie a pasta C:\livrosql\Ex2Replicacao):
Tabela 8.6 O Banco de Dados NorthwindPull.
Primário C:\livrosql\Ex2Replicacao\Ex2Replicacao-rim.mdf
Tamanho inicial: 5 MB.
Crescimento em incrementos de 5 %.
Tamanho máximo de 10MB.
Secundário C:\livrosql\Ex2Replicacao\Ex2Replicacao-sec1.ndf
Tamanho máximo de 100MB.
Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log1.ldf
Arquivo de log C:\livrosql\Ex2Replicacao\Ex2Replicacao-log2.ldf
A criação de um novo Banco de Dados para receber os dados replicados não é, de maneira alguma, obrigatório. Poderíamos utilizar um Banco de Dados já existente. Optamos por criar um novo Banco de Dados para salientar a execução deste procedimento.
12. A tela de criação do novo banco de dados, deverá estar conforme indicado na Figura 8.42:
Figura 8.42 – Definições para criação do banco de dados Ex2Replicacao.
13. Clique em OK para criar o banco de dados ExReplicacao. Você estará de volta ao assistente de Subscrição.
14 . Clique em Next, para seguir para a próxima etapa do assistente.
15 . Nesta etapa você irá definir as configurações de segurança (conta de conexão e opções de conexão), para cada agente de distribuição que for utilizado. No nosso exemplo, tem um único agente de Distribuição, pois configuramos um único subscriber. Se você tivesse configurado vários subscribers, seriam listados tantos agentes de distribuição, quantos fossem os subscribers configurados. Clique no botão ..., para fazer as configurações de segurança. Será aberta a janela Distribution Agent Security. Informe a conta a ser utilizada e a respectiva senha, conforme indicado na Figura 8.43. As contas devem ser informadas no formato NOME-DO-SERVIDOR\NOME-DACONTA ou NOME-DO-DOMÍNIO\NOME-DA-CONTA. Não altere as demais opções. Clique em OK. Você estará de volta ao assistente.
Figura 8.43 – Configurações de segurança, para o agente de Distribuição.
16 . Clique em Next, para seguir para a próxima etapa do assistente.
17 . Nesta etapa você deve definir um agendamento para cada um dos Subscribers que estão sendo configurados. Por exemplo, você poderia definir uma replicação de duas em duas horas para subscribers remotos, porém ligados por links de alta velocidade, uma replicação de 15 em 15 minutos para subscribers da mesma rede local e uma replicação uma vez por dia, de madrugada, para subscribers remotos, ligados por links de WAN de baixa velocidade. No nosso exemplo, temos um único subscribers. Vamos configurar uma replicação diariamente, de seis em seis horas. Clique na coluna Agent Schedule, abra a lista e seleicone a opção Define Schedule...
18 . Será aberta a janela para definição do agendamento, janela esta que você já aprendeu a utilziar no capítulo sobre Jobs e Agendamento de tarefas. Para definir uma replicação diária, de seis em seis horas, configure as opções indicadas na Figura 8.44 e clique em OK para criar o agendamento.
Figura 8.44 – Definindo o agendamento da replicação.
19 . Você estará de volta ao assistente para criação de novas Subscrições. Clique em Next, para seguir para a próxima etapa do assistente.
20 . Nesta etapa o assistente informa que cada subscrição tem que ser inicializada com uma replicação completa, do tipo Snapshot dos dados e do Schema. Nesta etapa você informa, para cada subscrição (no nosso exemplo é uma única subscrição), quando que este Snapshot inicial deverá ser criado. Você tem a opção de criá-lo imediatamente – opção Immediately na coluna "Initialize When", ou no próximo agendamento – opção At firs synchronization. Por padrão, vem selecionada a opção Immediately. Vamos manter esta opção selecionada.
21 . Clique em Next, para seguir para a próxima etapa do assistente.
22. Nesta etapa você pode marcar a opção Create the subscription(s) immediately, para que a subscrição seja criada imediatamente e também pode marcar a opção Generate a script..., caso você queira que seja criado um arquivo, contendo todos os comandos, necessários para criar a Subscrição, de acordo com as opções que você selecionou no assistente. Este script pode ser útil, por exemplo, para rapidamente recriar a subscrição, em caso de problemas. Você pode gravar estes comandos em um arquivo de texto e, quando for necessário recriar a publicação, é só copiar estes comandos do arquivo de texto e executá-los na janela de execução de comandos T-SQL. Marque as duas opções desta etapa.
23. Clique em Next, para seguir para a próxima etapa do assistente.
24. Nesta etapa (que só é exibida se você marcar a opção para gerar o Script, na etapa anterior), você definie onde será gravado o Script, o nome do arquivo e as propriedades do arquivo. Selecione as opções indicadas na Figura 8.45:
Figura 8.45 – Configurações do arquivo com os comandos.
25. Clique em Next, para seguir para a próxima etapa do assistente.
26. Será exibida a tela final do assistente, onde é apresentado um resumo de todas as opções selecionadas. Caso você tenha que alterar alguma opção, é só utilizar o botão Back. Clique em Finish para encerrar o assistente e criar a subscrição (ou subscrições, caso você tenha configurado mais de uma subscrição).
27. O SQL Server 2005 começará a criar a subscrição e exibirá uma janela, indicando o progresso do trabalho. Concluídas as diversas etapas de criação da subscrição, clique no botão Close para fechar a janela New Subscription Wizard. Muito bem, a subscrição foi criada. A partir deste momento, a instância SERVIDOR2\CURSOSJB, passará a receber os dados da publicação Minha Publicação, da instância SERVIDOR\SQL2005. Esta replicação será feita de seis em seis horas e os dados serão gravados no banco de dados Ex2Replicacao.
Apenas a título de curiosidade, coloco a seguir, o script gerado pelo assistente (lembre que em uma das etapas finais, marcamos a opção para gerar um arquivo com todos os comandos T-SQL, necessários para criação da subscrição):
-----------------BEGIN:  Script to be run at Publisher 'SERVIDOR\SQL2005'-----------------
use  [AdventureWorks]
exec  sp_addsubscription @publication = N'Minha Publicação', @subscriber =  N'SERVIDOR2\CURSOSJB',
@destination_db = N'Ex2Replicacao', @sync_type =  N'Automatic', @subscription_type = N'pull',
-----------------END:  Script to be run at Publisher 'SERVIDOR\SQL2005'-----------------
-----------------BEGIN:  Script to be run at Subscriber 'SERVIDOR2\CURSOSJB'-----------------
use [Ex2Replicacao]
exec  sp_addpullsubscription @publisher = N'SERVIDOR\SQL2005', @publication = N'Minha  Publicação',
@publisher_db = N'AdventureWorks', @independent_agent = N'True',  @subscription_type = N'pull',
@description = N'', @update_mode = N'read only',  @immediate_sync = 1
exec  sp_addpullsubscription_agent @publisher = N'SERVIDOR\SQL2005', @publisher_db =  N'AdventureWorks',
@publication = N'Minha Publicação', @subscriber =  N'SERVIDOR2\CURSOSJB', @subscriber_db = N'Ex2Replicacao',
@distributor =  N'SERVIDOR\SQL2005', @distributor_security_mode = 1, @distributor_login = null,
@distributor_password = null, @enabled_for_syncmgr = N'False', @frequency_type  = 4, @frequency_interval = 1,
@frequency_relative_interval = 0,  @frequency_recurrence_factor = 1, @frequency_subday = 8,
@frequency_subday_interval = 6, @active_start_time_of_day = 0,  @active_end_time_of_day = 235900,
@active_start_date = 20050510, @active_end_date  = 99991231, @alt_snapshot_folder = N'',
@working_directory = N'', @use_ftp =  N'False', @job_login = N'XYZ\Administrador', @job_password = N'',