Freigeben über


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

Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn Sie Ihren SQL Server für die Verwendung verschlüsselter Verbindungen und der Netzwerkpaketgröße konfigurieren.

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

Problembeschreibung

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:

    Die SaveToSQLServer-Methode hat OLE DB-Fehlercode 0x80004005 (Kommunikationslinkfehler) festgestellt. Die sql-Anweisung, die ausgegeben wurde, ist fehlgeschlagen.

    Notiz

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

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

    • Ein Auftrag zum Datensatzsammlungssatz meldet die folgenden Fehler im Auftragsverlauf:

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

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

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

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

SSIS-Fehler. Komponentenname: TaskForCollectionItem_1, Code: -1073602332, Unterkomponente: (null), Beschreibung: Fehler 0xC0014062 beim Vorbereiten des Ladens des Pakets. Die LoadFromSQLServer-Methode hat OLE DB-Fehlercode 0x80004005 (Kommunikationslinkfehler) festgestellt. Die ausgegebene SQL-Anweisung konnte nicht ausgeführt werden.

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 beide bedingungen (Verschlüsselung und große Paketgröße) in diesem Abschnitt zutreffen.

Ursache

Secure Socket Layer (SSL) und dessen Ersatz, Transport Layer Security(TLS), beschränken Datenfragmente auf 16k (16384) in der Größe. Dies ist in der öffentlichen RFC 2246 (Abschnitt 6.2.2) und der aktuellen Implementierung von Netzwerkprotokollen und TDS-Endpunktebene dokumentiert. Wenn Sie also eine Netzwerkpaketgröße verwenden, die größer als 16k in Umgebungen ist, 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 Bytes ist. Sie können den folgenden Code verwenden, um die network packet size Konfigurationsoption der sp_configure gespeicherten Systemprozedur festzulegen:

Notiz

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 Größe des Netzwerkpakets kann auch über die Seite "Servereigenschaften" in Objekt-Explorer geändert werden. Wählen Sie die Option "Erweitert" aus, und geben Sie den neuen Wert für "Netzwerkpaketgröße " ein, und klicken Sie auf "OK".

Notiz

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 vs. SSL

Schritte zum Reproduzieren

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

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

  3. Klicken Sie mit der rechten Maustaste auf die Datensammlung in Objekt-Explorer (OE), und deaktivieren Sie die Datensammlung.

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

  5. Klicken Sie mit der rechten Maustaste in den Sammlungssätzen 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 "Jetzt hochladen" aus. (Die DC-Protokolle zeigen den Fehler im Detail an).