Retry Logic para erros transientes no Windows Azure SQL Database (SQL Azure)

Parte 1 Criação da Base de Dados

Autor: Marcelo Franceschi de Bianchi - CTS LATAM

Revisor: Roberto Cavalcanti - CTS LATAM

As consultas do Windows Azure SQL Database (SQL Azure) podem falhar por várias razões: podem ter sido mal projetadas, problemas de rede e uma série de outros fatores. Alguns erros são transientes, o que significa que o problema frequentemente se resolve por si mesmo. Para esse subgrupo de erros, faz sentido tentar nova execução da consulta após um breve intervalo de tempo. Se a consulta ainda falhar após diversas tentativas, então pode ser reportado um erro. Note que nem todos os erros são considerados transientes. Por exemplo, SQL Erro 102 Incorrect Syntax. Para esse tipo de erro não adianta submeter a mesma query muitas vezes pois ele sempre será retornado até que se corrija a sintaxe da query.

Há uma biblioteca que faz a execução do retry logic para o SQL Azure, Windows Azure storage e para o AppFabric Service Bus. Utilizando essa biblioteca você poderá decidir quais são os erros que poderiam disparar tentativas de reexecução.

Um aspecto interessante da retry logic é que para que seja possível o teste de erros transientes, os mesmos devem ser disparados de forma repetitiva. Para esse artigo provocarei erros ao submeter uma consulta a uma determinada tabela essa tabela onde será feito um LOCK. Esse causará um Deadlock e consequentemente um Timeout. Quando esse lock for liberado, a consulta que foi disparada originalmente será então reexecutada. Nesse momento concluiremos como o retry logic funciona.

Esse é o primeiro de um total de três artigos que irão mostar detalhadamente como realizar o Retry Logic em sua aplicação.

1. A Criação do Servidor SQL Azure e da Base de Dados

Abra o Azure Management Portal e utilize as suas credenciais para logar.

Selecione Database que deseja criar o banco de dados como mostra a figura 1.

image

Figura 1: Selecionar o banco de dados no Windows Azure Platform.

Abaixo do Server então clique em Create e selecione a região do datacenter como mostra a figura 2.

clip_image002

Figura 2: Selecionar a região do Data Center

Na tela do wizard então você deverá selecionar a região e criar o login para administração do banco de dados como está demonstrado na figura 3.

clip_image004

Figura 3: Criando um novo servidor

Adicione uma regra com o seu endereço IP. Você também poderá optar por entrar com o range de Firewall como está demonstrado na figura 4, onde abrimos o range total 0.0.0.0 até 255.255.255.255 só para efeito de teste, mas após a solução construida você deverá construir uma regra de acordo com o seu range de IP.

clip_image006

Figura 4: Configurando as regras de Firewall

Note que existe um fully qualified server name para o novo servidor como está demonstrado na figura 5.

clip_image002[4]

Figura 5: SQL Azure Server

Em Database, clicar na opção Create e então definir o nome da Database, como por exemplo, PedidosClientes. Defina também a Edição para Web como ilustrado na figura 6.

clip_image004[4]

Figura 6: Criando o banco de dados SQL Azure

Em subscriptions, expanda o nó e selecione PedidosClientes e então faça o login no banco de dados PedidosClientes como está demonstrado na figura 7.

clip_image006[4]

Figura 7: Realizar Login SQL Azure

Nesse momento será aberta a tela de gerenciamento do banco de dados como está demonstrado na figura 8.

clip_image002[6]

Figura 8: Gerenciamento do SQL Azure

Agora vá para o artigo Retry Logic para erros transientes no SQL Azure parte 2 para continuar a implementação de Retry Logic na sua aplicação que irá acessar o banco de dados SQL Azure.

2. Referências

Retry Logic para erros transientes no SQL Azure parte 2

Retry Logic para erros transientes no SQL Azure parte 3

Retry Logic for Transient Failures in SQL Azure

https://social.technet.microsoft.com/wiki/contents/articles/4235.retry-logic-for-transient-failures-in-sql-azure.aspx

Download the c sharp class directly the library from https://appfabriccat.com/2011/02/transient-fault-handling-framework/

SQL Azure Retry Logic Sample

https://code.msdn.microsoft.com/windowsazure/SQL-Azure-Retry-Logic-2d0a8401

SQL Azure Connection Retry (CODE WITH PARAMETERS)

https://blogs.msdn.com/b/bartr/archive/2010/06/18/sql-azure-connection-retry.aspx

SQL Azure Connectivity Troubleshooting Guide

https://social.technet.microsoft.com/wiki/contents/articles/sql-azure-connectivity-troubleshooting-guide.aspx