Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: .NET Framework
.NET
.NET Standard
O método de repetição padrão, quando a opção de segurança está habilitada, é o SqlConfigurableRetryFactory.CreateNoneRetryProvider para SqlConnection e para SqlCommand. Você pode especificar um método de repetição diferente usando um arquivo de configuração.
Seções de configuração
As opções de lógica de repetição padrão de um aplicativo podem ser alteradas adicionando as seguintes seções dentro da seção configSections do arquivo de configuração:
-
SqlConfigurableRetryLogicConnection: para especificar a lógica de repetição padrão de SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: para especificar a lógica de repetição padrão de SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Observação
As configurações a seguir devem ser especificadas dentro da seção configuration. Declare essas novas seções para configurar a lógica de repetição padrão por meio de um arquivo de configuração de aplicativo.
Seção de conexão
Os seguintes atributos podem ser usados para especificar a lógica de repetição padrão para todas as instâncias SqlConnection de um aplicativo:
numberOfTries: define o número de vezes a tentar.
deltaTime: define o intervalo de tempo como um objeto TimeSpan.
minTime: define o intervalo de tempo mínimo permitido como um objeto TimeSpan.
maxTime: define o intervalo de tempo máximo permitido como um objeto TimeSpan.
transientErrors: define a lista de números de erro transitórios a tentar novamente.
retryMethod: especifica um criador de método de repetição que recebe a configuração de repetição por meio de um parâmetro SqlRetryLogicOption e retorna um objeto SqlRetryLogicBaseProvider.
retryLogicType: define um provedor de lógica de repetição personalizado, que contém os criadores de método de repetição que fornecem o
retryMethod. Esses métodos devem atender aos critérios deretryMethod. O nome do tipo totalmente qualificado do provedor deve ser usado. Para obter mais informações, confira Especificando nomes de tipo totalmente qualificados.
Observação
Não será necessário especificar retryLogicType se você usar os provedores de repetição internos. Para localizar os provedores internos de repetição, confira Provedores internos de lógica de repetição no SqlClient.
Seção de comando
O atributo a seguir também pode ser definido para todas as instâncias SqlCommand de um aplicativo:
- authorizedSqlCondition: define uma expressão regular de repetição prévia para SqlCommand.CommandText a fim de filtrar instruções SQL específicas.
Observação
A expressão regular diferencia maiúsculas de minúsculas.
Exemplos
Tenta até três vezes estabelecer uma conexão, com um atraso aproximado de 1 segundo entre as tentativas, usando o método SqlConfigurableRetryFactory.CreateFixedRetryProvider e a lista de erros transitórios padrão:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>Tenta até cinco vezes estabelecer uma conexão, com um atraso de até 45 segundos entre as tentativas, usando o método SqlConfigurableRetryFactory.CreateExponentialRetryProvider e a lista de erros transitórios padrão:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>Tenta executar um comando até quatro vezes com um atraso de 2 a 30 segundos usando o método SqlConfigurableRetryFactory.CreateIncrementalRetryProvider e a lista de erros transitórios padrão:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>Tenta executar um comando até oito vezes com um atraso de um segundo a um minuto. Limita-se a comandos com
CommandTextcontendo a palavraSELECTe os números de exceção 102 ou 997. Usa o método interno SqlConfigurableRetryFactory.CreateIncrementalRetryProvider:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Observação
Nos próximos dois exemplos, você pode encontrar o código-fonte da lógica de repetição personalizada das APIs principais da lógica de repetição configurável no SqlClient. Supõe-se que o método CreateCustomProvider esteja definido na classe CustomCRL_Doc.CustomRetry no assembly CustomCRL_Doc.dll que está no diretório em execução do aplicativo.
Tenta estabelecer uma conexão até cinco vezes, com um atraso de 3 a 45 segundos, números de erro 4060, 997 e 233 na lista e usando o provedor de repetição personalizado especificado:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>Este exemplo se comporta como o anterior:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Observação
Os provedores de lógica de repetição serão armazenados em cache no primeiro uso em uma conexão ou em um comando para uso futuro durante o tempo de vida de um aplicativo.
Observação
Eventuais erros ao ler um arquivo de configuração de aplicativo para as configurações de lógica de repetição não causarão erros no aplicativo. O SqlConfigurableRetryFactory.CreateNoneRetryProvider padrão será usado em vez disso.
Você pode usar o rastreamento da origem do evento para verificar ou solucionar problemas com a configuração da lógica de repetição. Para obter mais informações, confira Habilitar o rastreamento de eventos no SqlClient.