Q:

DTS_E_OLEDBERROR.  Error code: 0x80004005.Difference between SQl Native client and oledb provider for sql server

There was a communication link error while I was using SQL Server Native Client 10 in an SSIS Data Flow component. 

Error: 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. 

So I changed from SQL Server Native Client 10 to Microsoft OLEDB Provider for SQL Server, hoping that it would run fine.  This time got an error as shown below:

[Transacn_Tbl1[737]] Error: SSIS Error Code DTS_E_OLEDBERROR.   An OLE
  DB error has occurred.  Error code: 0x80004005.  An OLE DB record is
  available.   Source: "Microsoft OLE DB Provider for SQL Server" 
  Hresult: 0x80004005  Description: "Unspecified error occurred on SQL
  Server.  Connection may have been terminated by the server.". 
[Transacn_Tbl1[737]] Error: SSIS Error Code
  DTS_E_INDUCEDTRANSFORMFAILUREONERROR.   The "input "OLE DB Destination
  Input" (750)" failed because error code 0xC020907B occurred, and the
  error row disposition on "input "OLE DB Destination Input" (750)"
  specifies failure on error.  An error occurred on the specified object
  of the specified component.   There may be error messages posted before
  this with more information about the failure. 

What is the difference between these 2 providers?  Which one should I use? 

A:

It looks like you  have to resolve this issue, you must change the permissions for the Temp directory of the SQL Server Agent Service startup account.  Grant the Read permission and the Write permission to the SQL Server  Agent proxy account for this directory. 
http://support.microsoft.com/kb/933835

