Błąd dla pakietów SSIS na serwerach SQL skonfigurowanych do używania szyfrowania i rozmiaru pakietu sieciowego
Ten artykuł ułatwia rozwiązanie problemu występującego podczas konfigurowania SQL Server do używania zaszyfrowanych połączeń i opcji rozmiaru pakietu sieciowego.
Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2006769
Symptomy
Rozważmy następujący scenariusz dla środowisk SQL Server:
Skonfiguruj SQL Server, aby używać opcji Włącz połączenia szyfrowane z aparatem bazy danych na potrzeby połączeń.
Skonfiguruj serwer SQL tak, aby używał opcji rozmiaru pakietu sieciowego , która jest większa niż wartość domyślna (4K).
W tym scenariuszu zauważysz następujące elementy:
Próba zapisania pakietów SSIS w magazynie pakietów MSDB zakończy się niepowodzeniem z następującym komunikatem o błędzie:
Metoda SaveToSQLServer napotkała kod błędu OLE DB 0x80004005 (błąd łącza komunikacyjnego). Wydana instrukcja SQL nie powiodła się.
Uwaga
Podczas zapisywania planów konserwacji utworzonych w SQL Server Management Studio jako pakietów SSIS w bazach danych MSDB występuje również komunikat o błędzie, ponieważ ta operacja z natury używa szyfrowania dla połączeń z SQL Server.
Funkcja modułu zbierającego dane w SQL Server, która korzysta z usługi SSIS, napotkała różne problemy, jak wspomniano poniżej:
- Zadanie zestawu zbierania danych zgłasza następujące błędy w historii zadań:
dcexec: Błąd: Błąd wewnętrzny w pozycji Main (Przyczyna: System nie może odnaleźć określonego pliku).
dcexec: Błąd: Błąd wewnętrzny w main (przyczyna: dojście jest nieprawidłowe).- Podczas uruchamiania zestawu zbierania danych bezpośrednio z danych może wystąpić następujący komunikat o błędzie:
Pakiet "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection" nie powiódł się.
Jeśli przejrzysz dzienniki modułu zbierającego dane, zostanie wyświetlony komunikat o błędzie podobny do następującego:
Błąd SSIS. Nazwa składnika: TaskForCollectionItem_1, Kod: -1073602332, Podskładnik: (null), Opis: Błąd 0xC0014062 podczas przygotowywania do załadowania pakietu. Metoda LoadFromSQLServer napotkała kod błędu OLE DB 0x80004005 (błąd łącza komunikacyjnego). Wydana instrukcja SQL nie powiodła się.
Problem może wystąpić w przypadku dowolnej operacji używającej metody Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) lub metody Application.SaveToSqlServer(Package, IDTSEvents, String, String, String), gdy warunki (szyfrowanie i duży rozmiar pakietu) omówione w tej sekcji są prawdziwe.
Przyczyna
Protokół Secure Socket Layer (SSL) i jego zastąpienie, Transport Layer Security(TLS), ograniczają fragmenty danych do 16 000 (16384) rozmiaru. Jest to udokumentowane w publicznej wersji RFC 2246 (sekcja 6.2.2) oraz bieżącej implementacji protokołów sieciowych, a warstwa punktów końcowych TDS jest zgodna z tą specyfikacją. Dlatego w przypadku korzystania z rozmiaru pakietu sieciowego większego niż 16 tys. w środowiskach, w których włączono szyfrowanie w SQL Server, wystąpią błędy omówione w sekcji Objawy.
Rozwiązanie
Aby rozwiązać ten problem, określ rozmiar pakietu sieciowego, który jest mniejszy lub równy 16 384 bajtów. Aby ustawić opcję network packet size
konfiguracji procedury składowanej systemu, możesz użyć następującego sp_configure
kodu:
Uwaga
Jeśli usługa MARS jest włączona, dostawca SMUX doda 16-bajtowy nagłówek do pakietu przed szyfrowaniem SSL, zmniejszając maksymalny rozmiar pakietu sieciowego do 16368 bajtów.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
Rozmiar pakietu sieciowego można również zmienić za pośrednictwem strony Właściwości serwera w Eksplorator obiektów. Wybierz opcję Zaawansowane i wpisz nową wartość dla pozycji Rozmiar pakietu sieciowego i kliknij przycisk OK.
Uwaga
Aby zmiana była skuteczna, nie trzeba ponownie uruchamiać SQL Server. Po zmianie tego ustawienia wszystkie nowe połączenia otrzymają nową wartość.
Więcej informacji
Kroki do odtworzenia
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Upewnij się, że moduł zbierający dane jest zainstalowany.
Ustaw rozmiar pakietu sieciowego na wartość większą niż 16K.
Kliknij prawym przyciskiem myszy pozycję Zbieranie danych w Eksplorator obiektów (OE) i wyłącz zbieranie danych.
Kliknij prawym przyciskiem myszy pozycję Zbieranie danych w środowisku OE i wybierz pozycję Włącz zbieranie danych.
Kliknij prawym przyciskiem myszy pozycję Działanie serwera w zestawach kolekcji i wybierz pozycję Uruchom zestaw zbierania danych.
Aby uzyskać błąd, kliknij prawym przyciskiem myszy pozycję Działanie serwera i wybierz pozycję Zbierz i przekaż teraz. (Dzienniki kontrolera domeny pokazują szczegółowo błąd).