Foutbericht "Fout in communicatieverbinding" wordt op SQL-servers die zijn geconfigureerd voor het gebruik van codering en een groot netwerkpakketgrootte voor SSIS-pakketten gerapporteerd


Symptomen


Neem het volgende scenario voor omgevingen met SQL Server 2005 of SQL Server 2008:

  • U configureren SQL Server SSL gebruiken voor verbindingen.
  • Configureren van de SQL-server voor het gebruik van een netwerk-pakketgrootte die groter is dan de standaardwaarde (4 K)

In dit scenario ziet u het volgende:

  • Opslaan in het archief MSDB pakket SSIS-pakketten wordt mislukt en het volgende foutbericht weergegeven:

OLE DB-foutcode 0x80004005 (communicatiefout koppeling) is opgetreden in de methode SaveToSQLServer . De SQL-instructie die is uitgegeven is mislukt.

Opmerking:Ook uitvoeren in het bovenstaande foutbericht bij het opslaan van onderhoudsplannen gemaakt in SQL Server Management Studio als SSIS-pakketten met databases MSDB sinds die bewerking intrinsiek codering gebruikt voor verbindingen met SQL Server.

  • Gegevens verzamelen functie in SQL Server 2008 met SSI's, uitgevoerd in diverse problemen, zoals hieronder aangegeven:
    • Een collectie ingesteld Projectlijsten de volgende fouten in de geschiedenis:

dcexec: Foutbericht: interne fout op hoofdniveau (reden: het systeem kan het opgegeven bestand niet vinden) .dcexec: fout: interne fout op hoofdniveau (reden: de ingang is ongeldig).

    • Het volgende foutbericht kan optreden bij het uitvoeren van een collectie ingesteld rechtstreeks vanuit de gegevens:

Pakket '_Master_Package_Collection Set_ {7B191952-8ECF-4E12-AEB2-EF646EF79FEF}' is mislukt.

Als u de gegevensverzamelaarset Logboeken bekijkt vindt u een foutbericht van de volgende strekking.

Fout bij het SSIS. Naam: TaskForCollectionItem_1, Code:-1073602332, subonderdeel: (null) beschrijving: fout 0xC0014062 bij het voorbereiden van het pakket te laden. OLE DB-foutcode 0x80004005 (communicatiefout koppeling) is opgetreden in de methode LoadFromSQLServer .  De SQL-instructie die is uitgegeven is mislukt.

Opmerking: mogelijk is het probleem met een bewerking die de methode LoadFromSqlServer of SaveToSqlServer wordt gebruikt voor zowel de omstandigheden (codering en grote pakketgrootte) die in deze sectie worden beschreven.

Oorzaak


Secure Socket Layer (SSL) en de vervanging, Transport Layer Security (TLS op), fragmenten van gegevens beperken tot 16 kB (16384). Dit wordt beschreven in de openbare RFC 2246 (punt 6.2.2) en de huidige implementatie van SQL Network Interface (SNI) laag voldoet aan deze specificatie. Dus wanneer u grootte van een netwerkpakket dat groter is dan 16 kB in omgevingen waarin codering voor SQL Server is ingeschakeld, u naar fouten die worden beschreven in de sectie Symptomen uitvoeren wordt. Raadpleeg het volgende Knowledge Base-artikel voor meer informatie:

  • 2008195ikssues voor het wijzigen van de standaardwaarde van het netwerkpakketgrootte voor SQL server-verbindingen

Oplossing


Om dit probleem op te geven de grootte van een netwerkpakket dat kleiner is dan of gelijk aan 16.384 bytes.u kunt de volgende code stelt u de optie netwerkpakketgrootte van de sp_configure systeem opgeslagen procedure:

Opmerking Als MARS is ingeschakeld, wordt de SMux-provider toegevoegd een 16 byte header aan het pakket voor SSL-codering, verkorting van de maximale grootte van netwerkpakket 16368 bytes.

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

De netwerkpakketgrootte kan ook worden gewijzigd via de pagina eigenschappen in Object Explorer. Selecteer de optie Geavanceerd en typ in de nieuwe waarde voor de pakketgrootte netwerk en klik op OK.

Opmerking: u hoeft niet opnieuw op te starten van de SQL-Server om effectief te zijn voor de wijziging. Nadat deze instelling is gewijzigd, wordt alle nieuwe verbindingen de nieuwe waarde.

Meer informatie


Stappen te reproduceren:
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1.  Zorg ervoor dat de gegevensverzamelaarset is geïnstalleerd.
  2.  Stel de pakketgrootte netwerk op een waarde groter is dan 16 kB.
  3. Klik met de rechtermuisknop op Het verzamelen van gegevens in Object Explorer (OE) en gegevensverzameling uitschakelen.
  4. Klik met de rechtermuisknop op Het verzamelen van gegevens in OE en Verzamelen van gegevens inschakelente selecteren.
  5. Klik met de rechtermuisknop op de Activiteiten van de Server in de collectie sets en selecteer Start collectie ingesteld.
  6. Als u de fout, klik met de rechtermuisknop op de Activiteiten van de Server en selecteer verzamelen en nu uploaden. (De DC-logboeken geven de fout in detail).