Najczęściej nie jest to problem z serwerem SQL, ale konfiguracja wydaje się mieć wpływ tylko na WIELKIE WSTAWKI do serwerów SQL.
Niedawno przenieśliśmy VM Hardware, a wszystkich gości, którzy zostali przeniesieni, zmieniono przełączniki wirtualne ze standardowego na rozproszone.
Potem zacząłem otrzymywać
Wystąpił błąd krytyczny podczas odczytu strumienia wejściowego z sieci. Sesja zostanie zakończona (błąd wejściowy: 64, błąd wyjściowy: 0)
na dwóch serwerach SQL podczas operacji BULK INSERT. Jeden z serwerów SQL był maszyną wirtualną z nową konfiguracją, a drugi był serwerem fizycznym. Obie operacje WSTAWIAJĄC BULK pochodzą od maszyny wirtualnej z nową konfiguracją. WSTAWKI LUZOWE nie zawiodą za każdym razem, kiedy to się dzieje.
Kiedy zmieniliśmy przełącznik wirtualny na przełącznik standardowy zamiast przełącznika rozproszonego, problem znika.
Szukam więcej wyjaśnień, dlaczego nie działa z przełącznikiem rozproszonym zamiast rozdzielczości. Domyślam się, że operacja BULK INSERT jest szeregowa i przy użyciu przełącznika rozproszonego pakiety są kierowane przez różne hosty, z których niektóre mogą być bardziej obciążone niż inne, i docierają do serwera docelowego powyżej pewnego progu opóźnienia. (uwaga: w dzienniku zdarzeń systemu Windows nie ma nic w momencie wystąpienia błędów na serwerze źródłowym lub docelowym)
AKTUALIZACJA: okazuje się, że przyczyną problemu była karta sieciowa. Wszystkie nasze maszyny wirtualne zostały skonfigurowane z kartą sieciową E1000, która działała wystarczająco dobrze na standardowych przełącznikach. Po przejściu na przełączniki rozproszone zaczęliśmy dostrzegać problemy z dużymi transferami danych, a nie tylko zapytania SQL. Wydaje się, że zmiana karty sieciowej na VMXNET3 rozwiązała problem.