SQL Server Export To Excel 2010 bigger 255 character - sql-server

I'm trying to export a SQL server table to an Excel .xlsx file, but when bigger 255 character row, I get an error:
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred.
Error code: 0x00040EDA.
An OLE DB record is available.
Source: "Microsoft Office Access Database Engine"
Hresult: 0x80040E21
Description: "The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.".
Could you share any recommendation about fixing this problem?

Related

SSIS tasks are getting fail with Communication link failure error

In a SSIS package I have an OLED Source, a look up transformation and an OLE DB destination task. I'm running my package on VS 2019 but the tasks(OLED Source, OLE DB destination) are getting fail after 10 to 15 minutes with below error:
[OLE DB Destination [27]] 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 11.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "TCP Provider: The semaphore timeout period has expired.
".
[OLE DB Destination [27]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" 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.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE DB Destination" (27) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (40). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
[OLE DB Source [66]] Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on OLE DB Source returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.
I tried to fix this issue by setting validateExternalMetadata as false for the tasks but no luck.
I also checked others answers on stack overflow for almost the similar issues/ques. but that also didn't help.
Note: SSIS connection manager is using SQL server authentication and DB is Azure SQL
appreciate your help if any.
From my experience this error can have various reasons. For example this can be caused by the server being overloaded, or due to bad network. One thing you could try is to change the caching mode of your lookup component. I'm assuming it's running in "Full cache" mode, meaning that all the data in the lookups query will be read into memory of the SSIS server before doing the lookup. Changing this to "No cache" for example will result in the lookup query being run for every row that's fed into the component. "Partial cache" will cache, but only as each distinct value is encountered in the data flow. These other methods will put less load on memory of the SSIS server but more load on the lookup source database. If it works one option might be to increase RAM of the SSIS server.
I see that you are using a deprecated "Microsoft SQL Server Native Client 11.0"
Starting from 2018, it is better to use Microsoft OLE DB Driver for SQL Server
It is optimized for Azure, and has lots of new functionality.
Released: Microsoft OLE DB Driver for SQL Server
Microsoft OLE DB Driver for SQL Server

SSIS Data Flow Task Errors : SSIS Error Code DTS_E_OLEDBERROR and SSIS Error Code DTS_E_PRIMEOUTPUTFAILED

In my Data Flow Task (DFT ), I have OLE DB Source and Destination . In connection manager, my connection is OLE DB too.
Source is pulling 80000 records and loading in Desti. Simple package.
My Package is breaking on OLE DB Source.
The point to note is : It loads 53769 records very fine. But at the end it breaks on OLE DB Source.
Error:
[OLE DB Source [235]] 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 11.0"
Hresult: 0x80004005 Description: "Protocol error in TDS stream". An
OLE DB record is available. Source: "Microsoft SQL Server Native
Client 11.0" Hresult: 0x80004005 Description: "Communication link
failure". An OLE DB record is available. Source: "Microsoft SQL
Server Native Client 11.0" Hresult: 0x80004005 Description: "Shared
Memory Provider: No process is on the other end of the pipe.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The
PrimeOutput method on OLE DB Source returned error code 0xC0202009.
The component returned a failure code when the pipeline engine called
PrimeOutput(). The meaning of the failure code is defined by the
component, but the error is fatal and the pipeline stopped executing.
There may be error messages posted before this with more information
about the failure.
Can anyone help me please to solve this error?
This is my production environment.
Communication link failure
Shared Memory Provider: No process is on the other end of the pipe
The error messages above imply that there may be some network issues between the servers or the machine resources (especially RAM) are not able to handle the data.
You can try to change the adjust the data flow task buffer size.
Or you may try to load data in chunks, you can refer to the following article for a step-by-step guide:
SQL OFFSET FETCH Feature: Loading Large Volumes of Data Using Limited Resources with SSIS
I fixed it changing the Provider from SQL Server Native Client to Microsoft OLEDB Provider for SQL Server - it worked like a charm.

Visual Studio 2013 Integration project errors

I created a visual studio 2013 integration project to copy data from an MS ACCESS database to a remote SQL Server (~13,000 records). The first time I ran it, it almost finished with (~12,000) with the following errors:
[OLE DB Destination [2]] 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: "[DBNETLIB][ConnectionRead
(recv()).]General network error. Check your network documentation.".
[OLE DB Destination [2]] Error: SSIS Error Code
DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB
Destination.Inputs[OLE DB Destination Input]" failed because error
code 0xC020907B occurred, and the error row disposition on "OLE DB
Destination.Inputs[OLE DB Destination Input]" 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.
[SSIS.Pipeline] Error: SSIS Error
Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component
"OLE DB Destination" (2) failed with error code 0xC0209029 while
processing input "OLE DB Destination Input" (15). The identified
component returned an error from the ProcessInput method. The error is
specific to the component, but the error is fatal and will cause the
Data Flow task to stop running. There may be error messages posted
before this with more information about the failure.
I ran the test a second and 3rd time, but each time it seem to fail only transferring less than 2000 records.
What could be the problem? Is this a network issues, as it seems all my mappings are correct.
This was a user error. My visual studio was not showing the count transferred. Something with the themes. I decided to go into sql server and run a query to check what was been transferred. This was the culprit. It broke each time I ran it! So bad idea to be messing with sql server when running SSIS.

SSIS data flow validation failure on snapshot read

I have two database snapshots of the same source DB on my server with sql server 2008 R2. One of them is corrupted (marked suspect). My ETL does not read the corrupted one but is still failing validation for a data flow task when it is reading a view hosted on the good snapshot. The good snapshot does not refer to any entities in the corrupted DB snapshot. Is there any reason for this happening?
Error Code -
Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14 Description: "Database 'XXXXX_SS' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information.
Error Log
The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x000011579d6000 in file 'X:\X\XXXXX_4NSS.ss'.

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?
I ran into this issue after releasing a new SSIS project to the production environment.
At first, I was able to validate the package with success, but when I tried to execute the package, I got the DTS_E_OLEDBERROR. Error code: 0x80004005. message.
I tried to validate the package with the servername and password variables set to sensitive, but in this case the validation failed as well.
After setting the environment variables back to non-sensitive again and inserting the environment variable values, I was able to validate and execute the package.
To me it seems like in some cases the metadata in the SSISDB gets corrupted, but unfortunately I've not been able to point down the source of this issue.
I hope this will help someone. I've went through a lot of debug scenarios before I ended up with this (rather unsatisfying) solution.
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
I changed connection to Provider=SQLNCLI11.1 and executed
successfully with parameters.
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005
This obscure error can also mean something as benign as the OLE provider cannot find the expected Excel Worksheet.
I recently came across this error in an SSIS project and after several hours trying to track down what I believed was some configuration issue, it turned out to be the end user had simply changed the name of a Worksheet in the Excel data source.
Microsoft Messaging FTW!

Resources