Resilienza delle connessioni inattive nel driver OLE DB

Si applica a: SQL Server 2014 (12.x) e versioni successive Azure SQL Database

Scaricare il driver OLE DB

Panoramica

A partire da Microsoft OLE DB Driver per SQL Server versione 18.6.0, la resilienza della connessione consente al driver di ripristinare automaticamente le connessioni inattive.

Il diagramma seguente illustra il funzionamento della resilienza delle connessioni inattive in OLE DB Driver: Diagramma delle informazioni sulla resilienza delle connessioni

  1. Al livello T1 viene stabilita una connessione tramite IDBInitialize::Initialize.
  2. È presente un periodo di assenza di comunicazioni tra il driver e il server tra i livelli T2 e T3, che causa una connessione inattiva. Durante questo periodo la connessione di rete può risultare interrotta. L'interruzione può essere simile a un dispositivo di rete che chiude un socket inattivo o mette un dispositivo in standby per un breve periodo.
  3. Al livello T3 l'applicazione client prova a eseguire un comando con OLE DB Driver, ad esempio usando ICommand::Execute. Il driver rileva che la connessione è interrotta e la ripristina in modo trasparente.

Parole chiave e proprietà

Parola chiave Proprietà Valori Predefinito Descrizione
ConnectRetryCount SSPROP_INIT_CONNECT_RETRY_COUNT Numero intero compreso tra 0 e 255 inclusi 1 Controlla il numero massimo di tentativi di riconnessione se la connessione è stata interrotta. Per impostazione predefinita, viene effettuato un solo tentativo di ripristino di una connessione interrotta. Il valore 0 indica che non verrà tentata alcuna riconnessione.
ConnectRetryInterval SSPROP_INIT_CONNECT_RETRY_INTERVAL Numero intero compreso tra 1 e 60 inclusi 10 Intervallo in secondi tra ogni tentativo di ripristino della connessione. Questa parola chiave viene ignorata se ConnectRetryCount è uguale a 0.

Le pagine seguenti contengono altre informazioni sull'impostazione di queste proprietà:

Se un'applicazione stabilisce una connessione con DBPROP_INIT_PROMPT e successivamente prova a eseguire un'istruzione su una connessione interrotta, OLE DB Driver non visualizzerà di nuovo la finestra di dialogo.

Quando si ottiene lo stato della connessione tramite la proprietà DBPROP_CONNECTIONSTATUS:

  • Durante il ripristino la proprietà restituirà DBPROPVAL_CS_INITIALIZED.
  • Se il ripristino non riesce, la proprietà restituirà DBPROPVAL_CS_COMMUNICATIONFAILURE.

Nota

Se il timeout comando (DBPROP_COMMANDTIMEOUT in DBPROPSET_ROWSET) è stato impostato su un valore diverso da zero e il ripristino della connessione richiede più tempo del timeout comando, la connessione non verrà ripristinata.

Ripristino della connessione con esecuzione asincrona

Se si usa l'esecuzione asincrona e la connessione deve essere ripristinata, il ripristino della connessione verrà eseguito in modo sincrono prima dell'esecuzione della chiamata asincrona. Per altre informazioni sull'esecuzione asincrona, vedere Esecuzione di operazioni asincrone.

Errori previsti

Se il ripristino della connessione non riesce, può verificarsi uno degli errori seguenti:

  • La connessione è interrotta e il ripristino non è possibile. Il driver client ha tentato di ripristinare la connessione una o più volte e tutti i tentativi sono falliti. Aumentare il valore di ConnectRetryCount per aumentare il numero di tentativi di ripristino.
  • Il server non ha riconosciuto il tentativo di ripristino; il ripristino della connessione non è possibile.
  • Il server non ha conservato la versione TDS client esatta richiesta durante un tentativo di ripristino; il ripristino della connessione non è possibile.
  • Il server non ha conservato la versione principale del server esatta richiesta durante un tentativo di ripristino; il ripristino della connessione non è possibile.
  • La connessione è interrotta e il ripristino non è possibile. La connessione è stata contrassegnata dal server come non ripristinabile. Non è stato eseguito alcun tentativo di ripristinare la connessione.
  • La connessione è interrotta e il ripristino non è possibile. La connessione è stata contrassegnata dal driver client come non ripristinabile. Non è stato eseguito alcun tentativo di ripristinare la connessione.
  • Crittografia SSL non mantenuta dal server durante un tentativo di ripristino. Impossibile ripristinare la connessione.