Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2014 (12.x) e versões
posteriores Azure SQL Database
em Microsoft Fabric
Visão geral
A partir do Microsoft OLE DB Driver para SQL Server versão 18.6.0, a resiliência de conexão permite que o driver restaure automaticamente conexões ociosas quebradas.
O diagrama a seguir explica como a resiliência de conexão ociosa funciona no driver OLE DB: 
- Em T1, uma conexão é feita usando IDBInitialize::Initialize.
- Há um período sem comunicação entre o driver e o servidor entre T2 e T3, resultando em uma conexão ociosa. Durante esse tempo, a conexão de rede pode ser interrompida. A interrupção pode ser algo como um dispositivo de rede fechando uma tomada ociosa ou colocando um dispositivo em espera por um breve período.
- Em T3, o aplicativo cliente tenta executar um comando usando o driver OLE DB (por exemplo, usando ICommand::Execute. O driver deteta que a conexão está quebrada e restabelece a conexão de forma transparente.
Palavras-chave e propriedades
| Keyword | Propriedade | Valores | Predefinido | Description |
|---|---|---|---|---|
| ConnectRetryCount | SSPROP_INIT_CONNECT_RETRY_COUNT | Valor inteiro entre 0 e 255 (inclusive) | 1 | Controla o número máximo de tentativas de reconexão se a conexão tiver sido interrompida. Por padrão, uma única tentativa é feita para restabelecer uma conexão quando quebrada. Um valor 0 significa que nenhuma reconexão será tentada. |
| ConnectRetryInterval | SSPROP_INIT_CONNECT_RETRY_INTERVAL | Inteiro entre 1 e 60 (inclusive) | 10 | O tempo, em segundos, entre cada tentativa de repetição de conexão. Essa palavra-chave será ignorada se ConnectRetryCount for igual a 0. |
As páginas a seguir fornecem mais informações sobre como definir essas propriedades:
- Usando palavras-chave de cadeia de conexão com o driver OLE DB para SQL Server
- Propriedades de inicialização e autorização
Se um aplicativo estabelecer uma conexão com DBPROP_INIT_PROMPT e posteriormente tentar executar uma instrução sobre uma conexão quebrada, o driver OLE DB não exibirá a caixa de diálogo novamente.
Ao obter o status da conexão através da propriedade DBPROP_CONNECTIONSTATUS:
- Durante a recuperação, o imóvel devolverá DBPROPVAL_CS_INITIALIZED.
- Se a recuperação falhar, a propriedade retornará DBPROPVAL_CS_COMMUNICATIONFAILURE.
Observação
Se o tempo limite do comando (DBPROP_COMMANDTIMEOUT em DBPROPSET_ROWSET) tiver sido definido como um valor diferente de zero e a recuperação da conexão demorar mais do que o tempo limite do comando, a conexão não será recuperada.
Recuperação de conexão com execução assíncrona
Se estiver usando a execução assíncrona e a conexão precisar ser recuperada, a recuperação da conexão acontecerá de forma síncrona antes que a chamada assíncrona seja executada. Para obter mais informações sobre execução assíncrona, consulte Executando operações assíncronas.
Erros esperados
Se a recuperação da conexão falhar, um dos seguintes erros pode ocorrer:
- A conexão está quebrada e a recuperação não é possível. O driver do cliente tentou recuperar a conexão uma ou mais vezes e todas as tentativas falharam. Aumente o valor de ConnectRetryCount para aumentar o número de tentativas de recuperação.
- O servidor não reconheceu uma tentativa de recuperação, a recuperação da conexão não é possível.
- O servidor não preservou a versão exata do cliente TDS solicitada durante uma tentativa de recuperação, a recuperação da conexão não é possível.
- O servidor não preservou a versão principal exata do servidor solicitada durante uma tentativa de recuperação, a recuperação da conexão não é possível.
- A conexão está quebrada e a recuperação não é possível. A conexão é marcada pelo servidor como irrecuperável. Nenhuma tentativa foi feita para restaurar a conexão.
- A conexão está quebrada e a recuperação não é possível. A conexão é marcada pelo driver do cliente como irrecuperável. Nenhuma tentativa foi feita para restaurar a conexão.
- O servidor não preservou a criptografia SSL durante uma tentativa de recuperação, a recuperação da conexão não é possível.