C'è un timeout prima che l'hardware di rete segnali il timeout di connessione ai driver di rete, che a sua volta notifica i programmi in attesa di I/O di rete. È possibile verificare i timeout del livello di trasporto tramite telnet servername 1433 (supponendo che il server sql sia in ascolto sulla porta 1433).
Ma 3 secondi sono troppo brevi per un processo per inizializzare le API di rete (supponendo che l'app Web si trovi nel proprio pool di applicazioni), inviare una richiesta e attendere che l'hardware scada. L'aggiornamento di BIOS/firmware/driver probabilmente non ridurrà così tanto il tempo di risposta.
Sarebbe meglio eseguire la connessione in modo asincrono. non suggerisco di utilizzare EndInvoke per terminare la chiamata asincrona poiché gli utenti sfortunati potrebbero comunque dover attendere 3 secondi interi per vedere qualsiasi risposta quando il database è inattivo. Forse è meglio una chiamata Ajax. Se molti utenti visitano costantemente il tuo sito web, potresti voler memorizzare nella cache il risultato del controllo della connettività e aggiornarlo in modo significativo per i tuoi utenti.