Dela via


Fel för SSIS-paket på SQL-servrar som har konfigurerats för att använda kryptering och paketstorlek för nätverk

Den här artikeln hjälper dig att lösa det problem som uppstår när du konfigurerar SQL Server att använda krypterade anslutningar och storleksalternativ för nätverkspaket.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2006769

Symptom

Tänk på följande scenario för SQL Server-miljöer:

I det här scenariot ser du följande:

  • Ett försök att antingen spara SSIS-paket i MSDB-paketarkivet misslyckas med följande felmeddelande:

    Metoden SaveToSQLServer har påträffat OLE DB-felkod 0x80004005 (kommunikationslänkfel). SQL-instruktionen som utfärdades misslyckades.

    Kommentar

    Du får också felmeddelandet ovan när du sparar underhållsplaner som skapats i SQL Server Management Studio som SSIS-paket till MSDB-databaser eftersom den åtgärden i sig använder kryptering för anslutningar till SQL Server.

  • Datainsamlingsfunktionen i SQL Server som använder SSIS stöter på olika problem som anges nedan:

    • Ett datainsamlingsuppsättningsjobb rapporterar följande fel i jobbhistoriken:

    dcexec: Error: Internal error at Main (Reason: The system cannot find the file specified).
    dcexec: Fel: Internt fel på Main (Orsak: Handtaget är ogiltigt).

    • När du kör en datainsamlingsuppsättning direkt från data kan följande felmeddelande visas:

    Paketet "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection" misslyckades.

Om du granskar loggarna för datainsamlaren visas ett felmeddelande som liknar följande:

SSIS-fel. Komponentnamn: TaskForCollectionItem_1, Kod: -1073602332, Underkomponent: (null), Beskrivning: Fel 0xC0014062 när paketet ska läsas in. Metoden LoadFromSQLServer har påträffat OLE DB-felkod 0x80004005 (kommunikationslänkfel). SQL-instruktionen som utfärdades misslyckades.

Problemet kan inträffa med alla åtgärder som använder antingen Application.LoadFromSqlServer(String, String, String, String, String, IDTSEvents) Method eller Application.SaveToSqlServer(Package, IDTSEvents, String, String, String, String) Method methods when both the conditions (encryption and large packet size) som beskrivs i det här avsnittet är sanna.

Orsak

Secure Socket Layer (SSL) och dess ersättning, Transport Layer Security (TLS), begränsar datafragment till 16k (16384) i storlek. Detta dokumenteras i den offentliga RFC 2246 (avsnitt 6.2.2) och den aktuella implementeringen av nätverksprotokoll och TDS-slutpunktsskiktet följer den här specifikationen. När du använder en nätverkspaketstorlek som är större än 16 000 i miljöer där kryptering är aktiverat på SQL Server stöter du på fel som beskrivs i avsnittet Symptom.

Åtgärd

Lös problemet genom att ange en nätverkspaketstorlek som är mindre än eller lika med 16 384 byte. Du kan använda följande kod för att ange konfigurationsalternativet network packet size för den sp_configure systemlagrade proceduren:

Kommentar

Om MARS är aktiverat lägger SMUX-providern till ett 16-byteshuvud i paketet före SSL-kryptering, vilket minskar den maximala nätverkspaketstorleken till 16368 byte.

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

Nätverkspaketstorleken kan också ändras via sidan Serveregenskaper i Object Explorer. Välj alternativet Avancerat och skriv in det nya värdet för Nätverkspaketstorlek och klicka på OK.

Kommentar

Du behöver inte starta om SQL Server för att ändringen ska vara effektiv. När den här inställningen har ändrats får alla nya anslutningar det nya värdet.

Mer information

TLS jämfört med SSL

Steg för att återskapa

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Kontrollera att datainsamlaren är installerad.

  2. Ange storleken på nätverkspaket till ett värde som är större än 16 K.

  3. Högerklicka på Datainsamling i Object Explorer (OE) och Inaktivera datainsamling.

  4. Högerklicka på Datainsamling i OE och välj Aktivera datainsamling.

  5. Högerklicka på Serveraktivitet i samlingsuppsättningarna och välj Starta datainsamlingsuppsättning.

  6. Om du vill få felet högerklickar du på Serveraktivitet och väljer Samla in och ladda upp nu. (DC-loggarna visar felet i detalj).