Freigeben über


Fehler bei SSIS-Paketen auf SQL-Servern, die für die Verwendung von Verschlüsselung und Netzwerkpaketgröße konfiguriert sind

In diesem Artikel erfahren Sie, wie Sie das Problem beheben, das auftritt, wenn Sie Ihre SQL Server für die Verwendung verschlüsselter Verbindungen und der Option "Netzwerkpaketgröße" konfigurieren.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2006769

Symptome

Betrachten Sie das folgende Szenario für SQL Server Umgebungen:

In diesem Szenario werden Sie Folgendes bemerken:

  • Ein Versuch, SSIS-Pakete im MSDB-Paketspeicher zu speichern, schlägt mit der folgenden Fehlermeldung fehl:

    Bei der SaveToSQLServer-Methode ist ein OLE DB-Fehlercode 0x80004005 (Kommunikationslinkfehler) aufgetreten. Bei der ausgegebenen SQL-Anweisung ist ein Fehler aufgetreten.

    Hinweis

    Die obige Fehlermeldung tritt auch beim Speichern von Wartungsplänen auf, die in SQL Server Management Studio als SSIS-Pakete in MSDB-Datenbanken erstellt wurden, da dieser Vorgang inhärent Verschlüsselung für Verbindungen mit SQL Server verwendet.

  • Das Datensammlerfeature in SQL Server, das SSIS verwendet, tritt wie unten beschrieben auf verschiedene Probleme auf:

    • Ein Datensammlungssatzauftrag meldet die folgenden Fehler im Auftragsverlauf:

    dcexec: Fehler: Interner Fehler bei Main (Ursache: Das System kann die angegebene Datei nicht finden).
    dcexec: Fehler: Interner Fehler bei Main (Ursache: Das Handle ist ungültig).

    • Wenn Sie einen Datensammlungssatz direkt aus den Daten ausführen, wird möglicherweise die folgende Fehlermeldung angezeigt:

    Fehler beim Paket "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection".

Wenn Sie die Datensammlerprotokolle überprüfen, wird eine Fehlermeldung ähnlich der folgenden angezeigt:

SSIS-Fehler. Komponentenname: TaskForCollectionItem_1, Code: -1073602332, Unterkomponente: (NULL), Beschreibung: Fehler 0xC0014062 beim Vorbereiten des Ladens des Pakets. Bei der LoadFromSQLServer-Methode ist ein OLE DB-Fehlercode 0x80004005 (Kommunikationslinkfehler) aufgetreten. Bei der ausgegebenen SQL-Anweisung ist ein Fehler aufgetreten.

Das Problem kann bei jedem Vorgang auftreten, der entweder application.LoadFromSqlServer(String, String, String, String, IDTSEvents)-Methode oder Application.SaveToSqlServer(Package, IDTSEvents, String, String, String)-Methoden verwendet, wenn die in diesem Abschnitt beschriebenen Bedingungen (Verschlüsselung und große Paketgröße) zutreffen.

Ursache

Secure Socket Layer (SSL) und dessen Ersatz, Transport Layer Security (TLS), beschränken Datenfragmente auf 16.000 (16.384). Dies ist im öffentlichen RFC 2246 (Abschnitt 6.2.2) dokumentiert, und die aktuelle Implementierung von Netzwerkprotokollen, und die TDS-Endpunktebene entspricht dieser Spezifikation. Wenn Sie also eine Netzwerkpaketgröße verwenden, die größer als 16.000 ist, in Umgebungen, in denen die Verschlüsselung auf SQL Server aktiviert ist, treten Fehler auf, die im Abschnitt Symptome erläutert werden.

Lösung

Um dieses Problem zu beheben, geben Sie eine Netzwerkpaketgröße an, die kleiner oder gleich 16.384 Byte ist. Sie können den folgenden Code verwenden, um die network packet size Konfigurationsoption der gespeicherten sp_configure Systemprozedur festzulegen:

Hinweis

Wenn MARS aktiviert ist, fügt der SMUX-Anbieter dem Paket vor der SSL-Verschlüsselung einen 16-Byte-Header hinzu, wodurch die maximale Netzwerkpaketgröße auf 16368 Bytes reduziert wird.

EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO

Die Netzwerkpaketgröße kann auch über die Seite Servereigenschaften in Objekt-Explorer geändert werden. Wählen Sie die Option Erweitert aus, geben Sie den neuen Wert für Netzwerkpaketgröße ein, und klicken Sie auf OK.

Hinweis

Sie müssen SQL Server nicht neu starten, damit die Änderung wirksam ist. Nachdem diese Einstellung geändert wurde, erhalten alle neuen Verbindungen den neuen Wert.

Weitere Informationen

TLS im Vergleich zu SSL

Zu reproduzierende Schritte

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Stellen Sie sicher, dass Ihr Datensammler installiert ist.

  2. Legen Sie die Netzwerkpaketgröße auf einen Wert größer als 16K fest.

  3. Klicken Sie in Objekt-Explorer (OE) mit der rechten Maustaste auf Datensammlung und anschließend auf Datensammlung deaktivieren.

  4. Klicken Sie mit der rechten Maustaste auf Datensammlung in OE, und wählen Sie Datensammlung aktivieren aus.

  5. Klicken Sie in den Sammlungssätzen mit der rechten Maustaste auf Serveraktivität , und wählen Sie Datensammlungssatz starten aus.

  6. Um den Fehler zu erhalten, klicken Sie mit der rechten Maustaste auf Serveraktivität , und wählen Sie Jetzt sammeln und hochladen aus. (In den DC-Protokollen wird der Fehler ausführlich angezeigt.)