{"id":450,"date":"2016-02-18T18:23:49","date_gmt":"2016-02-18T18:23:49","guid":{"rendered":"http:\/\/www.tiagoneves.net\/blog\/?p=450"},"modified":"2016-02-18T18:23:49","modified_gmt":"2016-02-18T18:23:49","slug":"notificacao-em-caso-de-failover-ou-restart-do-sql-server","status":"publish","type":"post","link":"https:\/\/www.tiagoneves.net\/blog\/notificacao-em-caso-de-failover-ou-restart-do-sql-server\/","title":{"rendered":"Notifica\u00e7\u00e3o em caso de failover ou restart do SQL Server"},"content":{"rendered":"<p>Ol\u00e1 pessoal tudo certo?<\/p>\n<p>No post de hoje vou demonstrar como criar uma notifica\u00e7\u00e3o de quando a sua inst\u00e2ncia for reiniciada ou acontecer um faillover.<\/p>\n<p>Quando administramos muitas inst\u00e2ncias, pode ocorrer alguns eventos como um restart de uma inst\u00e2ncia ou um failover e acabar passando despercebido, por isso, toda vez que ocorre um destes eventos eu recebo uma notifica\u00e7\u00e3o por email para verificar o que aconteceu.<\/p>\n<p>Para criar este alerta eu uso a sys.dm_server_services, para mais informa\u00e7\u00f5es sobre (<a href=\"https:\/\/msdn.microsoft.com\/pt-br\/library\/hh204542%28v=sql.120%29.aspx\" target=\"_blank\" rel=\"noopener\">https:\/\/msdn.microsoft.com\/pt-br\/library\/hh204542%28v=sql.120%29.aspx<\/a>).<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true \">SELECT servicename, startup_type_desc, status_desc, last_startup_time\r\nFROM sys.dm_server_services<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_StatusServico.png\"  rel=\"lightbox[450] attachment wp-att-451\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-451\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_StatusServico.png?resize=614%2C62\" alt=\"NotificacaoFailover_StatusServico\" width=\"614\" height=\"62\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_StatusServico.png?w=614&amp;ssl=1 614w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_StatusServico.png?resize=300%2C30&amp;ssl=1 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/a><\/p>\n<p>A notifica\u00e7\u00e3o do evento \u00e9 realizada atrav\u00e9s um job que \u00e9 executado toda vez que o SQL Agent for iniciado, ele vai enviar um e-mail notificando que houve um failover ou que a inst\u00e2ncia foi reiniciada.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true\">DECLARE\r\n    @msg NVARCHAR(MAX),\r\n    @instancia VARCHAR(100),\r\n    @assunto VARCHAR(100);\r\n\r\nSELECT\r\n    @instancia = @@SERVERNAME;\r\nSET @assunto = 'A instancia ' + @instancia + ' Foi reiniciada';\r\nSET @msg = '&lt;p&gt; ' + @instancia + ' A Instancia foi reniciada.&lt;\/p&gt;';\r\n\r\nSET @msg = @msg + '&lt;table border=\"2\" cellspacing=\"2\" cellpadding=\"2\"&gt;';\r\n\r\nSET @msg = @msg + '&lt;tbody align=\"left\" style=\"font-family:Arial; font-size: 11;\" \r\n                   &lt;TR&gt;&lt;TH&gt;Service Name&lt;\/TH&gt;&lt;TH&gt;Startup Type&lt;\/TH&gt;&lt;TH&gt;Status&lt;\/TH&gt;\r\n                   &lt;TH&gt;Startup Time&lt;\/TH&gt;&lt;\/TR&gt;&lt;\/tbody&gt;';\r\n\r\nSELECT\r\n    @msg = @msg + '&lt;tbody align=\"left\" style=\"font-family:Arial;\r\n                    font-size: 11;\" &lt;TR&gt;&lt;TD&gt;' + servicename + '&lt;\/TD&gt;&lt;TD&gt;' \r\n\t           + startup_type_desc + '&lt;\/TD&gt;&lt;TD&gt;' + status_desc \r\n                   + '&lt;\/TD&gt;&lt;TD&gt;'+ CAST(last_startup_time AS VARCHAR(30))\r\n                   + '&lt;\/TD&gt;&lt;\/TR&gt;&lt;\/tbody&gt;'\r\nFROM\r\n    sys.dm_server_services;\r\n\r\n\r\nEXEC msdb.dbo.sp_send_dbmail\r\n    @profile_name = 'MSSQLSERVER',  -- \r\n    @recipients = 'meu@email.com',\r\n    @subject = @assunto, \r\n    @body = @msg, \r\n    @body_format = 'HTML';<\/pre>\n<p>Para criar o job basta expandir o SQL Agent<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_NewJOb.png\"  rel=\"lightbox[450] attachment wp-att-454\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-454\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_NewJOb.png?resize=309%2C292\" alt=\"NotificacaoFailover_CreateJob_NewJOb\" width=\"309\" height=\"292\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_NewJOb.png?w=451&amp;ssl=1 451w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_NewJOb.png?resize=300%2C283&amp;ssl=1 300w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png\"  rel=\"lightbox[450] attachment wp-att-453\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-453\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png?resize=678%2C399\" alt=\"NotificacaoFailover_CreateJob\" width=\"678\" height=\"399\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png?w=1306&amp;ssl=1 1306w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png?resize=300%2C176&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png?resize=768%2C452&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob.png?resize=1024%2C602&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Na guia steps voc\u00ea deve colocar o script acima.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png\"  rel=\"lightbox[450] attachment wp-att-455\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-455\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png?resize=678%2C397\" alt=\"NotificacaoFailover_CreateJob_Task\" width=\"678\" height=\"397\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png?w=1080&amp;ssl=1 1080w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png?resize=300%2C176&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png?resize=768%2C450&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Task.png?resize=1024%2C600&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Na guia schedules dever\u00e1 colocar &#8220;Start automatically when SQL Server Agent starts&#8221;<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Schedule.png\"  rel=\"lightbox[450] attachment wp-att-456\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-456\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Schedule.png?resize=678%2C582\" alt=\"NotificacaoFailover_CreateJob_Schedule\" width=\"678\" height=\"582\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Schedule.png?w=679&amp;ssl=1 679w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_CreateJob_Schedule.png?resize=300%2C258&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Pronto, quando acontecer um restart voc\u00ea vai receber um email como este.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_Email_Notificacao.png\"  rel=\"lightbox[450] attachment wp-att-457\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-457\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_Email_Notificacao.png?resize=678%2C244\" alt=\"NotificacaoFailover_Email_Notificacao\" width=\"678\" height=\"244\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_Email_Notificacao.png?w=684&amp;ssl=1 684w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_Email_Notificacao.png?resize=300%2C108&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Para criar um notifica\u00e7\u00e3o em caso de failover, \u00e9 um procedimento um pouco diferente, para isso precisamos criar uma tabela em um banco de dados, nela vamos armazenar os n\u00f3s que fazem parte do nosso cluster, essa informa\u00e7\u00e3o obtemos na fun\u00e7\u00e3o <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ms174396.aspx\" target=\"_blank\" rel=\"noopener\">SERVERPROPERTY<\/a>, ela nos mostra todas as informa\u00e7\u00f5es da inst\u00e2ncia.<\/p>\n<p>Vamos criar as tabelas e popular com os dados que s\u00e3o obtidos na fun\u00e7\u00e3o SERVERPROPERTY.<\/p>\n<p>Como \u00e9 a configura\u00e7\u00e3o inicial vamos colocar os valores Nm_Servidor_Ativo e Nm_Servidor_Passivo com o mesmo valor.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true\">CREATE TABLE Alerta_Failover\r\n(\r\nNm_Servidor_Ativo VARCHAR(50),\r\nNm_Servidor_Passivo VARCHAR(50)\r\n)\r\n\r\nINSERT INTO Alerta_Failover (Nm_Servidor_Ativo,Nm_Servidor_Passivo)\r\n\u00a0VALUES (CONVERT(VARCHAR(100),SERVERPROPERTY('ComputerNamePhysicalNetBIOS')),\r\n\u00a0(CONVERT(VARCHAR(100),SERVERPROPERTY('ComputerNamePhysicalNetBIOS'))))<\/pre>\n<p>Ap\u00f3s as tabelas criadas vamos criar um job, para envio do alerta em caso de failover, os passos para criar o job \u00e9 o mesmo da inst\u00e2ncia stand alone, por\u00e9m na parte de configurar o step voc\u00ea vai utilizar este script, ele vai nos notificar se houve um failover ou se apenas a inst\u00e2ncia foi reiniciada.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true  \">DECLARE @Nm_Servidor_Ativo VARCHAR(100);\r\nDECLARE @Nm_Servidor_Passivo VARCHAR(100);\r\nDECLARE @msg NVARCHAR(MAX);\r\nDECLARE @instancia VARCHAR(100);\r\nDECLARE @assunto VARCHAR(100);\r\n\r\nSET @Nm_Servidor_Ativo = CONVERT(VARCHAR(100), SERVERPROPERTY('ComputerNamePhysicalNetBIOS'));\r\nSET @Nm_Servidor_Passivo = ( SELECT Nm_Servidor_Passivo FROM Alerta_Failover );\r\nSELECT\r\n    @instancia = @@SERVERNAME;\r\n\r\n\r\nIF @Nm_Servidor_Ativo &lt;&gt; @Nm_Servidor_Passivo\r\n    \r\n\tBEGIN\r\n\r\n\r\n        UPDATE\r\n            Alerta_Failover\r\n        SET\r\n            Nm_Servidor_Ativo = @Nm_Servidor_Ativo;\r\n\r\n        SET @assunto = 'Aten\u00e7\u00e3o ocorreu um failover na inst\u00e2ncia ' + @instancia + '.';\r\n        \r\n\t\tSET @msg = '&lt;p&gt; Um failover aconteceu na inst\u00e2ncia ' + @instancia + '&lt;\/p&gt;';\r\n  \r\n        SET @msg = @msg + '&lt;table border=\"2\" cellspacing=\"2\" cellpadding=\"2\"&gt;';\r\n     \r\n        SET @msg = @msg + '&lt;tbody align=\"left\" style=\"font-family:Arial; font-size: 11;\"\r\n\t\t                   &lt;TR&gt;&lt;TH&gt;Nm_Servidor_Ativo&lt;\/TH&gt;&lt;TH&gt;Nm_Servidor_Passivo&lt;\/TH&gt;&lt;\/TR&gt;&lt;\/tbody&gt;';\r\n\t\t\r\n        SET @msg = @msg + '&lt;tbody align=\"left\" style=\"font-family:Arial; font-size: 11;\" &lt;TR&gt;&lt;TD&gt;' + @Nm_Servidor_Ativo + \r\n\t\t                  '&lt;\/TD&gt;&lt;TD&gt;' + @Nm_Servidor_Passivo + '&lt;\/TD&gt;&lt;\/TR&gt;&lt;\/tbody&gt;';\r\n\r\n        EXEC msdb.dbo.sp_send_dbmail \r\n\t\t\t@profile_name = 'MSSQLSERVER', \r\n\t\t\t@recipients = 'meu@email.com', \r\n\t\t\t@subject = @assunto, \r\n\t\t\t@body = @msg,\r\n\t\t\t@body_format = 'HTML';\r\n        \r\n\t\tUPDATE\r\n            Alerta_Failover\r\n        SET\r\n            Nm_Servidor_Passivo = @Nm_Servidor_Ativo;\r\n\t  \r\n    END;\r\n\r\n\r\nIF @Nm_Servidor_Ativo = @Nm_Servidor_Passivo  -- Restart\r\n  \r\n    DECLARE @msg_restart NVARCHAR(MAX);\r\n\tDECLARE @assunto_restart VARCHAR(100);\r\n\r\nBEGIN\r\n\r\n\r\n \r\n    SET @msg_restart = 'Aten\u00e7\u00e3o a instancia: ' + @instancia + ' foi reiniciada, mas n\u00e3o fez failover.';\r\n    SET @assunto_restart = 'Aten\u00e7\u00e3o inst\u00e2ncia: ' + @instancia + ' Foi reiniciada.';\r\n    EXEC msdb.dbo.sp_send_dbmail\r\n\t\t@profile_name = 'MSSQLSERVER', \r\n\t\t@recipients = 'meu@email.com', \r\n\t\t@subject = @assunto_restart, \r\n\t\t@body = @msg_restart;\r\n\r\nEND;\r\n<\/pre>\n<p>E-mail de notifica\u00e7\u00e3o em caso de failover.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailFailover.png\"  rel=\"lightbox[450] attachment wp-att-459\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-459\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailFailover.png?resize=678%2C230\" alt=\"NotificacaoFailover_EmailFailover\" width=\"678\" height=\"230\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailFailover.png?w=718&amp;ssl=1 718w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailFailover.png?resize=300%2C102&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>E-mail de notifica\u00e7\u00e3o em caso de restart;<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailRestart.png\"  rel=\"lightbox[450] attachment wp-att-460\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-460\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailRestart.png?resize=678%2C156\" alt=\"NotificacaoFailover_EmailRestart\" width=\"678\" height=\"156\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailRestart.png?w=714&amp;ssl=1 714w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/NotificacaoFailover_EmailRestart.png?resize=300%2C69&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Bom pessoal, por hoje \u00e9 isso, espero que o alerta possa te ajudar a monitorar os eventos de failover e restart da sua inst\u00e2ncia e at\u00e9 a pr\u00f3xima.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Tiago Neves<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 pessoal tudo certo? No post de hoje vou demonstrar como criar uma notifica\u00e7\u00e3o de quando a sua inst\u00e2ncia for reiniciada ou acontecer um faillover. Quando administramos muitas inst\u00e2ncias, pode ocorrer alguns eventos como um restart de uma inst\u00e2ncia ou um failover e acabar passando despercebido, por isso, toda vez que ocorre um destes eventos&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_91251433_91251433":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_wpscppro_dont_share_socialmedia":false,"_wpscppro_custom_social_share_image":0,"_facebook_share_type":"","_twitter_share_type":"","_linkedin_share_type":"","_pinterest_share_type":"","_linkedin_share_type_page":"","_instagram_share_type":"","_medium_share_type":"","_threads_share_type":"","_google_business_share_type":"","_selected_social_profile":[],"_wpsp_enable_custom_social_template":false,"_wpsp_social_scheduling":{"enabled":false,"datetime":null,"platforms":[],"status":"template_only","dateOption":"today","timeOption":"now","customDays":"","customHours":"","customDate":"","customTime":"","schedulingType":"absolute"},"_wpsp_active_default_template":true},"categories":[4,20,5],"tags":[112,111,114,113,115,116],"class_list":["post-450","post","type-post","status-publish","format-standard","hentry","category-scripts","category-sqlserver-geral","category-virtual-pass-br","tag-failover","tag-monitoramento","tag-notificacao","tag-restart","tag-tiago-neves","tag-tiagonevesdba"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6eIyh-7g","jetpack-related-posts":[{"id":2352,"url":"https:\/\/www.tiagoneves.net\/blog\/alwayson-boas-praticas-para-instalar-o-cumulative-update\/","url_meta":{"origin":450,"position":0},"title":"AlwaysOn &#8211; Boas Pr\u00e1ticas para instalar o Cumulative Update","author":"tiagoneves","date":"2 de julho de 2020","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje vou falar um pouco mais sobre o SQL Server AlwaysOn, onde vi em alguns f\u00f3runs uma d\u00favida bem comum: \u201cQual \u00e9 a melhor forma de atualizar o SQL Server em um ambiente com o AlwaysOn habilitado?\u201d Mas antes, se voc\u00ea quiser ver\u2026","rel":"","context":"Em &quot;High Availability&quot;","block_context":{"text":"High Availability","link":"https:\/\/www.tiagoneves.net\/blog\/category\/high-availability\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/06\/image-12.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/06\/image-12.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/06\/image-12.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/06\/image-12.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2269,"url":"https:\/\/www.tiagoneves.net\/blog\/leitura-na-replica-do-alwayson-com-sql-standard-isso-e-possivel-parte-i\/","url_meta":{"origin":450,"position":1},"title":"Leitura na R\u00e9plica do AlwaysOn com SQL Standard? Isso \u00e9 poss\u00edvel? &#8211; Parte I","author":"tiagoneves","date":"5 de fevereiro de 2020","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? Estamos iniciando mais um ano de atividade aqui no blog, neste primeiro post vou compartilhar uma solu\u00e7\u00e3o de contorno que desenhei em um cliente. Cen\u00e1rio: O cliente estava tendo v\u00e1rios problemas de performance no SQL Server, pois no ambiente dele tinha v\u00e1rias requisi\u00e7\u00f5es de relat\u00f3rios, al\u00e9m\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/02\/AlwaysOn_Snapshot001.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/02\/AlwaysOn_Snapshot001.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/02\/AlwaysOn_Snapshot001.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/02\/AlwaysOn_Snapshot001.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2020\/02\/AlwaysOn_Snapshot001.png?resize=1050%2C600 3x"},"classes":[]},{"id":1373,"url":"https:\/\/www.tiagoneves.net\/blog\/como-configurar-a-geo-replicacao-em-um-azure-sql-database\/","url_meta":{"origin":450,"position":2},"title":"Como configurar a geo-replica\u00e7\u00e3o em um Azure SQL Database","author":"tiagoneves","date":"12 de julho de 2018","format":false,"excerpt":"Ol\u00e1 pessoal, tudo certo? No post de hoje vou dar continuidade ao post anterior \"Criando um banco de dados Azure SQL Database\". Agora vamos configurar a replica\u00e7\u00e3o geogr\u00e1fica de banco de dados. O Azure disponibiliza a op\u00e7\u00e3o de replicarmos as nossas bases de dados para outra regi\u00e3o ou na mesma.\u2026","rel":"","context":"Em &quot;Azure&quot;","block_context":{"text":"Azure","link":"https:\/\/www.tiagoneves.net\/blog\/category\/azure\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/database_replication_Principal_dashboard.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/database_replication_Principal_dashboard.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/database_replication_Principal_dashboard.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/database_replication_Principal_dashboard.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/database_replication_Principal_dashboard.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":2216,"url":"https:\/\/www.tiagoneves.net\/blog\/como-tirei-a-certificacao-mcse-data-management-and-analytics\/","url_meta":{"origin":450,"position":3},"title":"Como tirei a certifica\u00e7\u00e3o MCSE &#8211; Data Management and Analytics","author":"tiagoneves","date":"18 de setembro de 2019","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje eu vou comentar um pouco sobre provas de certifica\u00e7\u00e3o, especialmente sobre as provas 70-764, 70-765 e 70-465. Quem me acompanha nas redes sociais (LinkedIn \/ Twitter \/ Facebook) viu que nas \u00faltimas semanas eu recebi o t\u00edtulo de MCSE (Microsoft Certified Solutions\u2026","rel":"","context":"Em &quot;Certifica\u00e7\u00e3o&quot;","block_context":{"text":"Certifica\u00e7\u00e3o","link":"https:\/\/www.tiagoneves.net\/blog\/category\/certificacao\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1845,"url":"https:\/\/www.tiagoneves.net\/blog\/conhecendo-as-server-roles-e-database-roles-do-sql-server\/","url_meta":{"origin":450,"position":4},"title":"Conhecendo as Server Roles e Database Roles do SQL Server","author":"tiagoneves","date":"14 de agosto de 2019","format":false,"excerpt":"Hoje em dia, seguran\u00e7a \u00e9 um assunto s\u00e9rio quando falamos de dados, neste post explico os n\u00edveis de acessos e permiss\u00e3o de cada role do SQL Server.","rel":"","context":"Em &quot;Seguran\u00e7a&quot;","block_context":{"text":"Seguran\u00e7a","link":"https:\/\/www.tiagoneves.net\/blog\/category\/seguranca\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/07\/Descricao_Acessos007.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":355,"url":"https:\/\/www.tiagoneves.net\/blog\/sql-saturday-469-minhas-impressoes\/","url_meta":{"origin":450,"position":5},"title":"SQL Saturday #469 minhas impress\u00f5es&#8230;","author":"tiagoneves","date":"24 de novembro de 2015","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje vou relatar um pouco do evento SQL Saturday que aconteceu no ultimo s\u00e1bado dia 21\/11 em Bras\u00edlia. O evento foi um sucesso de publico, organiza\u00e7\u00e3o e qualidade das palestras, assisti a 5 sess\u00f5es de alt\u00edssima qualidade, fora o network que acabamos fazendo.\u2026","rel":"","context":"Em &quot;Eventos&quot;","block_context":{"text":"Eventos","link":"https:\/\/www.tiagoneves.net\/blog\/category\/eventos\/"},"img":{"alt_text":"palestrantes_sqlsat469","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/11\/20151121_181103.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/comments?post=450"}],"version-history":[{"count":4,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions"}],"predecessor-version":[{"id":510,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions\/510"}],"wp:attachment":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/media?parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/categories?post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/tags?post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}