{"id":3924,"date":"2016-06-09T09:45:07","date_gmt":"2016-06-09T12:45:07","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=3924"},"modified":"2016-07-23T14:56:07","modified_gmt":"2016-07-23T17:56:07","slug":"queries-do-dia-a-dia-monitorando-erros-em-uma-replicacao-transacional","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2016\/06\/09\/queries-do-dia-a-dia-monitorando-erros-em-uma-replicacao-transacional\/","title":{"rendered":"Queries do Dia a Dia &#8211; Monitorando Erros em uma Replica\u00e7\u00e3o Transacional"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Esse \u00e9 um post r\u00e1pido com uma dica de uma rotina que implantei em um <a href=\"https:\/\/www.fabriciolima.net\/clientes\/\" target=\"_blank\">cliente<\/a> com replica\u00e7\u00e3o.<\/p>\n<p>Na minha opni\u00e3o, replica\u00e7\u00e3o \u00e9 uma das funcionalidades mais complicadas de se configurar e administrar no SQL Server. No meu caso, era uma replica\u00e7\u00e3o um pouco mais simples de 250 tabelas entre dois servidores e n\u00e3o era bidirecional. Com uma replica\u00e7\u00e3o merge ou bidirecional, come\u00e7a a complicar mais um pouco.<\/p>\n<p>Uma das minhas preocupa\u00e7\u00f5es era de monitorar os erros gerados pela replica\u00e7\u00e3o, mas com o comando abaixo conseguimos monitorar esses erros:<\/p>\n<p>select time, error_text, xact_seqno,command_id<br \/>\nfrom distribution.dbo.MSrepl_errors<br \/>\nwhere error_code &lt;&gt; &#8221;<\/p>\n<p style=\"text-align: center;\">\u00a0<a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3928\" title=\"ReplicacaoError\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-1024x268.png\" alt=\"\" width=\"614\" height=\"161\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-1024x268.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-300x79.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-768x201.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-700x183.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-410x107.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-100x26.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-275x72.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError-20x5.png 20w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/ReplicacaoError.png 1321w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/a><\/p>\n<p>Dessa forma, criei um alerta para rodar a cada 30 min e \u00a0enviar um e-mail em HTML com os erros que s\u00e3o inseridos nessa tabela de log da replica\u00e7\u00e3o.<\/p>\n<p>Segue o c\u00f3digo para criar a procedure que far\u00e1 o envio desse alerta: <a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/06\/Alertas-Erros-Replicacao.txt\" target=\"_blank\">Alertas Erros Replicacao<\/a><\/p>\n<p>Basta alterar o profile e o e-mail para envio no c\u00f3digo da procedure e, em seguida, criar um job para rodar o alerta a cada 30 min.<\/p>\n<p>Caso um erro seja encontrado, ser\u00e1 enviado um alerta conforme o abaixo:<\/p>\n<p style=\"text-align: center;\">\u00a0<a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/EmailErroReplicacao.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3929\" title=\"EmailErroReplicacao\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/03\/EmailErroReplicacao-1024x315.png\" alt=\"\" width=\"574\" height=\"177\" \/><\/a><\/p>\n<p>Espero que esse alerta possa te ajudar.<\/p>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Caso queira aprender mais scripts e rotinas do dia a dia de um DBA, olhe o conte\u00fado desse treinamento: <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Tarefas do Dia a Dia de um DBA<\/a><\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Esse \u00e9 um post r\u00e1pido com uma dica de uma rotina que implantei em um cliente com replica\u00e7\u00e3o. Na minha opni\u00e3o, replica\u00e7\u00e3o \u00e9 uma das funcionalidades mais complicadas de se configurar e administrar no SQL Server. No meu caso, era uma replica\u00e7\u00e3o um pouco mais simples de 250 tabelas entre dois servidores e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,942,1248,33,280],"tags":[1241,1238,1235,1240,1239,701,1234,1236,33,1237],"class_list":["post-3924","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-consultoria-sql-server","category-queries-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-alert-replication","tag-alerta-replicacao","tag-erro-replicacao","tag-monitor-replication","tag-monitorando-replicacao","tag-replicacao","tag-replicacao-transacional","tag-replication","tag-sql-server","tag-transactional"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":9844,"url":"https:\/\/fabriciolima.net\/blog\/2018\/12\/07\/managed-instance-17-tirando-relatorios-pesados-da-producao-e-executando-em-uma-replica-com-dados-online\/","url_meta":{"origin":3924,"position":0},"title":"Managed Instance (#17) \u2013 Tirando relat\u00f3rios pesados da produ\u00e7\u00e3o e executando em uma r\u00e9plica com dados Online!","author":"Fabr\u00edcio Lima","date":"7 de dezembro de 2018","format":false,"excerpt":"Fala Pessoal, Segue mais um post da s\u00e9rie sobre Managed Instance. A ideia desse post \u00e9 simular 1 loop fazendo insert e 3 loops fazendo consultas para monitorar o consumo de CPU do servidor. Primeiramente vou rodar tudo em uma \u00fanica inst\u00e2ncia. Depois vou balancear a carga e mandar as\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1502,"url":"https:\/\/fabriciolima.net\/blog\/2012\/04\/17\/simulado-para-a-prova-70-432-parte-14-final\/","url_meta":{"origin":3924,"position":1},"title":"Simulado para a prova 70-432 \u2013 Parte 14 &#8211; Final","author":"Fabr\u00edcio Lima","date":"17 de abril de 2012","format":false,"excerpt":"Fala Pessoal, Sucesso de acessos, coment\u00e1rios e agradecimentos no blog, segue o \u00faltimo post da s\u00e9rie de simulados com 5 quest\u00f5es para a Prova 70-432 - Microsoft SQL Server 2008 - Implementation and Maintenance. Obrigado pelos feedbacks e agora \u00e9 com voc\u00eas. Seguem as \u00faltimas quest\u00f5es: \u00a0 1) Na configura\u00e7\u00e3o\u2026","rel":"","context":"Em &quot;Certifica\u00e7\u00e3o SQL Server&quot;","block_context":{"text":"Certifica\u00e7\u00e3o SQL Server","link":"https:\/\/fabriciolima.net\/blog\/category\/certificacao-2\/certificacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9051,"url":"https:\/\/fabriciolima.net\/blog\/2018\/06\/18\/azure-sql-database-permitindo-que-sua-empresa-pequena-tenha-uma-base-replicada\/","url_meta":{"origin":3924,"position":2},"title":"Azure SQL Database &#8211; Permitindo que sua empresa pequena tenha uma base replicada","author":"Fabr\u00edcio Lima","date":"18 de junho de 2018","format":false,"excerpt":"Fala Pessoal, Esse post \u00e9 s\u00f3 para avisar que tem um novo v\u00eddeo no meu canal do youtube. Ap\u00f3s a MVPConf, fiz um v\u00eddeo com a DEMO de replica\u00e7\u00e3o geogr\u00e1fica que mostrei no evento. Segue o link do v\u00eddeo no canal do youtube:\u00a0V\u00eddeo Replica\u00e7\u00e3o Geogr\u00e1fica Gostou da dica? Curta, comente,\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1816,"url":"https:\/\/fabriciolima.net\/blog\/2012\/09\/11\/webcast-de-setembro-virtual-pass-br\/","url_meta":{"origin":3924,"position":3},"title":"Webcast de Setembro Virtual PASS BR","author":"Fabr\u00edcio Lima","date":"11 de setembro de 2012","format":false,"excerpt":"Fala Pessoal, Passando para divulgar o Webcast do m\u00eas de setembro do Grupo Virtual Pass br. T\u00edtulo: Uma aplica\u00e7\u00e3o pr\u00e1tica de replica\u00e7\u00e3o no SQL Server 2008 R2 Palestrante: Marcel Inowe Data: 20\/09\/2012 Hor\u00e1rio: 21:00 \u00e0s 22:00 Descri\u00e7\u00e3o do Evento: Nesta se\u00e7\u00e3o veremos as principais formas e suas diferen\u00e7as de replica\u00e7\u00e3o\u2026","rel":"","context":"Em &quot;Eventos&quot;","block_context":{"text":"Eventos","link":"https:\/\/fabriciolima.net\/blog\/category\/eventos\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9842,"url":"https:\/\/fabriciolima.net\/blog\/2018\/12\/06\/managed-instance-16-e-verdade-que-nossa-instancia-ja-vem-com-um-alwayson-ag-configurado\/","url_meta":{"origin":3924,"position":4},"title":"Managed Instance (#16) \u2013 \u00c9 verdade que nossa inst\u00e2ncia j\u00e1 vem com um AlwaysOn AG configurado?","author":"Fabr\u00edcio Lima","date":"6 de dezembro de 2018","format":false,"excerpt":"Fala Pessoal, Esse \u00e9 mais um post da s\u00e9rie sobre o Azure SQL Database Managed Instance. E ai Fabr\u00edcio, \u00e9 verdade mesmo que o MI (Managed Instance) j\u00e1 vem com um AlwaysOn AG ou \u00e9 papo de vendedor e palestrante??? Resposta de consultor.\u00a0 Depende!\u00a0 =) Como j\u00e1 respondi no post\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_AlwaysON_8.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_AlwaysON_8.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_AlwaysON_8.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":9978,"url":"https:\/\/fabriciolima.net\/blog\/2018\/12\/27\/managed-instance-18-sql-agent-offline-ao-logar-no-mi\/","url_meta":{"origin":3924,"position":5},"title":"Managed Instance (#18) \u2013 SQL Agent Offline ao logar no MI","author":"Fabr\u00edcio Lima","date":"27 de dezembro de 2018","format":false,"excerpt":"Fala Pessoal, Esse \u00e9 um post r\u00e1pido com uma dica sobre um caso que aconteceu comigo no Ignite. Chego eu para montar minha demo que estava fazendo para o pessoal que vinha com d\u00favidas e quando ia falar que o MI tinha o SQL Agent dispon\u00edvel, ele aparece Offline conforme\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_18_1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=3924"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3924\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}