"Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding."
Quante volte capita? Eppure nella connection string "Connection Timeout" l'ho impostato a 0... Però dopo meno di un minuto...
Sembrerebbe che l'oggetto Command NON erediti il Timeout dalla Connection...
A pensarci bene (dopo averlo scoperto, ovviamente!) sembra anche logico: l'oggetto Commend ha la sua relativa proprietà (.CommandTimeout), quindi perché ereditarlo? Peccato che lo scopri dopo aver tentato in ogni modo (per giorni e giorni) di ottimizzare una Stored Procedure, messo e tolto indici da tutte le parti, fatto comprare RAM per il DB server (che ovviamente ti vende solo il produttore della macchina a peso d'oro), fatto cambiare il DB server con uno più potente, fatto spostare la sala macchine in un altro continente perchè magari il clima umido rallenta le performance, esserti rivolto al mago Tutankamon (facendo il numero 899 dal tuo cellulare personale perché dal telefono fisso dell'azienda l'899 è "blindato") per sapere se qualcuno ti ha fatto la fattura (scoprendo tramite il tuo capo, che le fatture le hanno fatte all'azienda... e anche salate!!!)...
Riepilogando: oltre ad impostare MyConnection.ConnectionTimeout ricordarsi di impostare MyCommand.CommandTimeout!!