Questo probabilmente non è un problema del server SQL, ma l'installazione sembra interessare solo INSERTI BULK ai server SQL.
Di recente abbiamo spostato l'hardware VM e tutti gli ospiti che sono stati spostati hanno avuto i loro switch virtuali cambiati da standard a distribuiti.
Ho quindi iniziato a ricevere
Si è verificato un errore irreversibile durante la lettura del flusso di input dalla rete. La sessione verrà terminata (errore di input: 64, errore di output: 0)
su due server SQL durante le operazioni BULK INSERT. Uno dei server SQL era una macchina virtuale con la nuova configurazione e l'altro era un server fisico. Entrambe le operazioni BULK INSERT hanno avuto origine da una macchina virtuale con la nuova configurazione. Gli INSERTI BULK non fallivano ogni volta, era molto casuale quando sarebbe successo.
Quando abbiamo cambiato lo switch virtuale in uno switch standard anziché in uno distribuito, il problema scompare.
Sto cercando più di una spiegazione al perché non funziona con uno switch distribuito anziché con una risoluzione. La mia ipotesi sarebbe che l'operazione BULK INSERT è seriale e con uno switch distribuito i pacchetti vengono instradati attraverso host diversi, alcuni dei quali potrebbero essere più occupati di altri, e stanno arrivando al server di destinazione oltre una soglia di latenza. (nota: non c'è nulla nel registro eventi di Windows al momento degli errori sul server di origine o di destinazione)
AGGIORNAMENTO: risulta che il problema era dovuto alla scheda di rete. Tutte le nostre macchine virtuali erano configurate con una scheda di rete E1000 che funzionava abbastanza bene su switch standard. Una volta passati a switch distribuiti, abbiamo iniziato a riscontrare problemi con trasferimenti di dati di grandi dimensioni, non solo query sql. La modifica della scheda NIC in VMXNET3 sembra aver risolto il problema.