Dies ist wahrscheinlich kein SQL Server-Problem, aber das Setup scheint nur BULK INSERTS für SQL Server zu betreffen.
Wir haben kürzlich die VM-Hardware verschoben, und bei allen Gästen, deren Umzug erfolgte, wurden die virtuellen Switches von Standard auf verteilt geändert.
Ich fing dann an zu empfangen
Beim Lesen des Eingabestreams aus dem Netzwerk ist ein schwerwiegender Fehler aufgetreten. Die Sitzung wird beendet (Eingabefehler: 64, Ausgabefehler: 0)
auf zwei SQL-Servern während BULK INSERT-Vorgängen. Einer der SQL-Server war eine VM mit der neuen Konfiguration und der andere war ein physischer Server. Beide BULK INSERT-Vorgänge stammten von einer VM mit der neuen Konfiguration. Die BULK INSERTs würden nicht jedes Mal versagen, es war sehr zufällig, wenn es würde.
Wenn wir den virtuellen Switch in einen Standard-Switch anstelle eines verteilten Switches geändert haben, ist das Problem behoben.
Ich suche nach einer Erklärung dafür, warum es nicht mit einem verteilten Switch anstelle einer Auflösung funktioniert. Meine Vermutung wäre, dass die BULK INSERT-Operation seriell ist und mit einem verteilten Switch die Pakete über verschiedene Hosts geleitet werden, von denen einige möglicherweise geschäftiger als andere sind und über einen bestimmten Latenzschwellenwert hinaus am Zielserver ankommen. (Hinweis: Zum Zeitpunkt der Fehler befindet sich weder auf dem Quell- noch auf dem Zielserver etwas im Windows-Ereignisprotokoll.)
UPDATE: Es stellte sich heraus, dass das Problem auf die Netzwerkkarte zurückzuführen war. Alle unsere VMs wurden mit einer E1000-Netzwerkkarte konfiguriert, die auf Standard-Switches gut genug funktionierte. Nachdem wir zu verteilten Switches gewechselt waren, stellten wir Probleme mit großen Datenübertragungen fest, nicht nur mit SQL-Abfragen. Das Ändern der Netzwerkkarte in VMXNET3 scheint das Problem behoben zu haben.