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

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

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2006769

Symptom

Tänk dig 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.

    Obs!

    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.

  • Funktionen för datainsamlare 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: Fel: Internt fel på Main (Orsak: Systemet kan inte hitta den angivna filen).
    dcexec: Error: Internal error at 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, Delkomponent: (null), Beskrivning: Fel 0xC0014062 när paketet skulle 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 en åtgärd som använder antingen Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) Method eller Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) Metodmetoder när båda villkoren (kryptering och stor paketstorlek) 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 storlek på nätverkspaket 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 systemlagringsprocedur:

Obs!

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

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

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

Obs!

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 000.

  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).