Ecco il mio ultimo sforzo per rivedere questa domanda. Ma questa volta, sto cercando di seguire il buon consiglio dato da Oded nel suo articolo Getting good answers on StackOverflow.Come determinare la causa principale dell'errore del collegamento di comunicazione Provider TCP: il nome di rete specificato non è più disponibile?
ho bisogno per scoprire come è possibile determinare la causa principale per il seguente errore:
Communication link failure
TCP Provider: The specified network name is no longer available
Di tanto in tanto, sto vedendo questo errore durante l'esecuzione di una serie di pacchetti SSIS. Questo errore può verificarsi quando uno a molti pacchetti è gestita da:
- A SQL Server Agent
- Un file batch
- In modalità di debug da BIDS
Il messaggio di errore completo vedo è la seguente:
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: The specified network name is no longer available.
".
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Protocol error in TDS stream".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: An existing connection was forcibly closed by the remote host."
Questa è una panoramica di come ho progettato il processo ETL:
- Due server
- Entrambi sono macchine virtuali
- Pacchetti SSIS eseguito su un server di applicazioni di database
- di SQL Server vive su un server di database
Io uso una connessione OLE DB gestore per connettersi dal pacchetto SSIS sul server delle applicazioni al database SQL Server sul server del database.
I pacchetti vengono eseguiti come distribuzione del file system sul server delle applicazioni e non come distribuzione del database sul server del database.
Il motivo principale di ciò è che l'ETL è integrato con un set di strumenti non trovati e unità non accessibili al server di database. Questi strumenti includono Apex Data Loader per Salesforce e pgAdmin III.
Finora non riesco a riprodurre questo errore in modo coerente. Tuttavia, questo è quello che ho osservato:
- guasto si verifica più frequentemente durante il normale orario lavorativo
- guasto si verifica meno frequentemente durante le ore
Per circa un periodo di due ore di Venerdì mattina ho è riuscito a riprodurre correttamente l'errore su un pacchetto specifico.
L'errore si è verificato durante un flusso di dati di grandi dimensioni se è stata abilitata una chiamata di pacchetto figlio che precede il flusso di dati di grandi dimensioni.
L'errore non si è verificato durante lo stesso flusso di dati di grandi dimensioni se la chiamata del pacchetto figlio che precede il flusso di dati di grandi dimensioni è stata disabilitata.
Il pacchetto figlio in questione richiama il database per recuperare una piccola quantità di informazioni da utilizzare nel corpo dell'e-mail e quindi invia l'e-mail.
Sembra che si possa superare un limite di risorse?
Forse un limite di connessione?
Mi chiedo quali strumenti dovrei utilizzare per cercare di determinare la causa principale dell'errore.
Dettagli tecnici sulle due server coinvolti sono elencati di seguito:
SQL Server e Info database server:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 17 giugno 2011 00 : 54: 03 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) in Windows NT 6.1 (Build 7601: service pack 1) (hypervisor)
SSIS informazioni:
Microsoft Visual Studio 2008 Version 9.0.30729.1 SP Microsoft .NET Framework versione 3.5 SP1
informazioni Application Server:
nome del sistema operativo: Microsoft Windows Server 2008 R2 Standard Versione: 6.1.7601 Service Pack 1 Build 7601
ho ricercato il messaggio di errore in linea e trovato questi, ma vorrei davvero ottenere l'intuizione di un esperto prima di procedere:
How to Disable TCP Chimney, TCPIP Offload Engine (TOE) or TCP Segmentation Offload (TSO).
Using Netsh Commands to Enable or Disable TCP Chimney Offload
Qualsiasi aiuto è apprezzato.
Grazie
UPDATE:
Ulteriori test dimostra che questo non è "una cosa SSIS", come lo stesso errore è visto alla stessa velocità quando si utilizza SQL Server Management Studio. La complessità della query non rende l'errore più o meno probabile. Nel tentativo di risolvere, abbiamo cercato una correzione (sotto):
#1 How to Disable TCP Chimney, TCPIP Offload Engine (TOE) or TCP Segmentation Offload (TSO).
Questo è stato il nostro primo tentativo. TCP Chimney ora è disabilitato su Application Server e Database Server. I test mostrano che lo stesso errore si verifica alla stessa velocità.
Quindi dove andare da qui? Sinceramente non ne sono sicuro. Un apparentemente buona opzione rimane: installazioni di SQL Server
Application Server e server di database non corrispondono esattamente
Application Server = SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
Database Server = SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
Il piano è quello di aggiornare l'installazione di SQL Server sul server applicazioni. È una specie di successo e di speranza, ma a questo punto sembra l'opzione migliore. Qualcosa nel mio cervello mi dice che questo potrebbe essere risolto risolvendo un problema hardware (intendo una riparazione o una sostituzione) e che potrebbe non esserci nulla che la configurazione hardware e software possa fare al riguardo.
Tuttavia, non sono ancora sicuro su come determinare la causa principale. Rimango ancora a chiedermi quali strumenti dovrei usare per diagnosticare la causa principale.
Hai risolto il problema? – matcheek
@matcheek grazie per l'inchiesta. Mi spiace dirlo, no, non ancora ... anche se ho provato alcune cose e rotto alcune cose. Sei libero di imparare dal mio fallimento. Ho aggiornato la domanda con lo stato corrente. –
@santiago_jon, vedo lo stesso errore nei registri del mio server web. Codice Python che utilizza ADO per comunicare con SQL 2008r2. Lo stack completo è VM, quindi non è probabile che si tratti di un problema hardware. – Manfre