Udostępnij za pośrednictwem


Błąd dotyczący pakietów usług SSIS na serwerach SQL skonfigurowanych do używania szyfrowania i rozmiaru pakietów sieciowych

Ten artykuł ułatwia rozwiązanie problemu występującego podczas konfigurowania programu SQL Server do używania szyfrowanych połączeń i opcji rozmiaru pakietów sieciowych.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2006769

Symptomy

Rozważmy następujący scenariusz dla środowisk programu SQL Server:

  • Należy skonfigurować program SQL Server do używania opcji Włącz połączenia zaszyfrowane z aparatem bazy danych na potrzeby połączeń.

  • Serwer SQL należy skonfigurować tak, aby używał opcji rozmiaru pakietów sieciowych większej niż wartość domyślna (4K).

W tym scenariuszu zauważysz następujące kwestie:

  • Próba zapisania pakietów usług 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). Instrukcja SQL, która została wydana, nie powiodła się.

    Uwaga 16.

    Podczas zapisywania planów konserwacji utworzonych w programie SQL Server Management Studio jako pakietów usług SSIS w bazach danych MSDB występuje również powyższy komunikat o błędzie, ponieważ ta operacja z założenia używa szyfrowania dla połączeń z programem SQL Server.

  • Funkcja modułu zbierającego dane w programie SQL Server korzystająca z usług SSIS jest uruchamiana w różnych problemach, jak wspomniano poniżej:

    • Zadanie Zestaw zbierania danych zgłasza następujące błędy w historii zadań:

    dcexec: Błąd: Błąd wewnętrzny w 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".

Jeśli przeglądasz dzienniki modułu zbierającego dane, zostanie wyświetlony komunikat o błędzie podobny do następującego:

Błąd usług 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). Instrukcja SQL, która została wydana, nie powiodła się.

Problem może wystąpić w przypadku dowolnej operacji, która używa metod Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) lub Application.SaveToSqlServer(Package, IDTSEvents, String, String), gdy oba warunki (szyfrowanie i duży rozmiar pakietu) omówione w tej sekcji są prawdziwe.

Przyczyna

Secure Socket Layer (SSL) i jego zamiennik, Transport Layer Security (TLS), ograniczają fragmenty danych do 16k (16384) rozmiaru. Jest to udokumentowane w publicznej warstwie RFC 2246 (sekcja 6.2.2) oraz bieżąca implementacja protokołów sieciowych oraz 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 szyfrowanie jest włączone w programie SQL Server, wystąpią błędy omówione w sekcji Objawy.

Rozwiązanie

Aby rozwiązać ten problem, określ rozmiar pakietu sieciowego o rozmiarze mniejszym lub równym 16 384 bajtom. Aby ustawić network packet size opcję konfiguracji procedury składowanej systemu, możesz użyć następującego sp_configure kodu:

Uwaga 16.

Jeśli usługa MARS jest włączona, dostawca SMUX doda do pakietu nagłówek 16 bajtów 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 opcji Rozmiar pakietu sieciowego, a następnie kliknij przycisk OK.

Uwaga 16.

Nie trzeba ponownie uruchamiać programu SQL Server, aby zmiana ta okazała się skuteczna. Po zmianie tego ustawienia wszystkie nowe połączenia otrzymają nową wartość.

Więcej informacji

TLS a SSL

Kroki odtwarzania

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Upewnij się, że moduł zbierający dane jest zainstalowany.

  2. Ustaw rozmiar pakietu sieciowego na wartość większą niż 16 tys.

  3. Kliknij prawym przyciskiem myszy pozycję Zbieranie danych w Eksplorator obiektów (OE) i Wyłącz zbieranie danych.

  4. Kliknij prawym przyciskiem myszy pozycję Zbieranie danych w środowisku OE i wybierz pozycję Włącz zbieranie danych.

  5. Kliknij prawym przyciskiem myszy pozycję Działanie serwera w zestawach kolekcji i wybierz pozycję Uruchom zestaw zbierania danych.

  6. Aby uzyskać błąd, kliknij prawym przyciskiem myszy działanie serwera i wybierz pozycję Zbieraj i przekaż teraz. (Dzienniki kontrolera domeny zawierają szczegółowe informacje o błędzie).