Fout voor SSIS-pakketten op SQL-servers die zijn geconfigureerd voor het gebruik van versleuteling en netwerkpakketgrootte
Dit artikel helpt u bij het oplossen van het probleem dat optreedt wanneer u uw SQL Server configureert voor het gebruik van versleutelde verbindingen en de optie netwerkpakketgrootte.
Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 2006769
Symptomen
Houd rekening met het volgende scenario voor SQL Server-omgevingen:
U configureert uw SQL Server voor het gebruik van versleutelde verbindingen met de database-engine inschakelen voor verbindingen.
U configureert uw SQL-server voor het gebruik van een optie voor netwerkpakketten die groter is dan de standaardwaarde (4K).
In dit scenario ziet u het volgende:
Een poging om SSIS-pakketten op te slaan in het MSDB-pakketarchief mislukt met het volgende foutbericht:
De saveToSQLServer-methode heeft OLE DB-foutcode aangetroffen 0x80004005 (communicatiekoppelingsfout). De SQL-instructie die is uitgegeven, is mislukt.
Notitie
U krijgt ook het bovenstaande foutbericht bij het opslaan van onderhoudsplannen die zijn gemaakt in SQL Server Management Studio als SSIS-pakketten naar MSDB-databases, omdat die bewerking inherent gebruikmaakt van versleuteling voor verbindingen met SQL Server.
Gegevensverzamelaarfunctie in SQL Server die gebruikmaakt van SSIS, kan verschillende problemen ondervinden, zoals hieronder wordt vermeld:
- Een gegevensverzamelingssettaak rapporteert de volgende fouten in de taakgeschiedenis:
dcexec: Fout: Interne fout bij Main (reden: het systeem kan het opgegeven bestand niet vinden).
dcexec: Fout: Interne fout bij Main (reden: de ingang is ongeldig).- Wanneer u een gegevensverzamelingsset rechtstreeks vanuit de gegevens uitvoert, kan het volgende foutbericht worden weergegeven:
Pakket 'Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection' is mislukt.
Als u de logboeken van De gegevensverzamelaar bekijkt, ziet u een foutbericht dat er ongeveer als volgt uitziet:
SSIS-fout. Onderdeelnaam: TaskForCollectionItem_1, Code: -1073602332, Subcomponent: (null), Beschrijving: Fout 0xC0014062 tijdens het voorbereiden om het pakket te laden. De methode LoadFromSQLServer heeft OLE DB-foutcode aangetroffen 0x80004005 (communicatiekoppelingsfout). De SQL-instructie die is uitgegeven, is mislukt.
Het probleem kan zich voordoen bij elke bewerking die gebruikmaakt van de methode Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) of Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) wanneer zowel de voorwaarden (versleuteling als de grote pakketgrootte) die in deze sectie worden besproken, waar zijn.
Oorzaak
Secure Socket Layer (SSL) en de vervanging, Transport Layer Security (TLS), beperken gegevensfragmenten tot 16k (16384) in grootte. Dit wordt beschreven in de openbare RFC 2246 (sectie 6.2.2) en de huidige implementatie van netwerkprotocollen en de laag TDS-eindpunten voldoet aan deze specificatie. Dus wanneer u een netwerkpakketgrootte gebruikt die groter is dan 16k in omgevingen waarin versleuteling is ingeschakeld op SQL Server, treedt er fouten op die worden besproken in de sectie Symptomen.
Oplossing
U kunt dit probleem oplossen door een netwerkpakketgrootte op te geven die kleiner is dan of gelijk is aan 16.384 bytes. U kunt de volgende code gebruiken om de network packet size
configuratieoptie van de sp_configure
door het systeem opgeslagen procedure in te stellen:
Notitie
Als MARS is ingeschakeld, voegt de SMUX-provider een header van 16 byte toe aan het pakket vóór SSL-versleuteling, waardoor de maximale netwerkpakketgrootte wordt verkleind tot 16368 bytes.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
De grootte van het netwerkpakket kan ook worden gewijzigd via de pagina Servereigenschappen in Objectverkenner. Selecteer de optie Geavanceerd en typ de nieuwe waarde voor netwerkpakketgrootte en klik op OK.
Notitie
U hoeft SQL Server niet opnieuw te starten om de wijziging effectief te laten zijn. Nadat deze instelling is gewijzigd, ontvangen alle nieuwe verbindingen de nieuwe waarde.
Meer informatie
Stappen om te reproduceren
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Zorg ervoor dat uw Data Collector is geïnstalleerd.
Stel de netwerkpakketgrootte in op een waarde die groter is dan 16.000.
Klik met de rechtermuisknop op Gegevensverzameling in Objectverkenner (OE) en schakel gegevensverzameling uit.
Klik met de rechtermuisknop op Gegevensverzameling in OE en selecteer Gegevensverzameling inschakelen.
Klik met de rechtermuisknop op Serveractiviteit in de verzamelingssets en selecteer Set gegevensverzameling starten.
Als u de fout wilt weergeven, klikt u met de rechtermuisknop op Serveractiviteit en selecteert u Nu verzamelen en uploaden. (In de DC-logboeken wordt de fout gedetailleerd weergegeven).