I'm getting a strange error in SSIS when connecting to a Sybase ASE server using an ODBC connection. I've got several DFTs connecting to the same server, and when I run the entire package several of them fail mid-way with the error messages below. If I run one DFT at a time, they complete successfully. I've thought about restructuring the package to run them sequentially, but I would lose the benefit of parallel execution, not to mention it would be a lot of work as it's a big package. Hoping someone has seen this before because google hasn't turned up any answers.
[ODBC Source [14]] Error: Open Database Connectivity (ODBC) error occurred.
state: '08S01'. Native Error Code: 30016. [Sybase][ODBC Driver]Bad TDS
response stream received from server.
Unsupported length for TDS_INTN: 111
[ODBC Source [14]] Error: Open Database Connectivity (ODBC) error occurred.
state: '08S01'. Native Error Code: 30016. [Sybase][ODBC Driver]Bad TDS
response stream received from server. Unexpected token type received: 109.
[ODBC Source [69]] Error: Open Database Connectivity (ODBC) error occurred.
state: '01004'. Native Error Code: 32007. [Sybase][ODBC Driver]String data,
right truncated
The main error you are facing is
Right truncation of string data
According to the following Sybase documentation, the probable cause of this error is:
Non-space characters were truncated upon the assignment of string data.
Suggestions
You have to increase the size of the parameter/field/variable used
OR
You can Set string_rtruncation option to Off so no exception is raised when a truncation is occured.
Based on this Sybase Documentation
If the truncated characters consist only of spaces, no exception is raised. The setting of On corresponds to ANSI/ISO SQL/2008 behavior. When this option is set to Off, the exception is not raised and the character string is silently truncated.
String truncation may occur in several places. For example, using INSERT, UPDATE, CAST, or assignment to a variable may truncate a string if the declared destination type is too short.
Similar Problem links
ODBC ERROR "STRING DATA, RIGHT TRUNCATED" WHEN QUERYING DATA IN OPENEDGE DATABASE VIA ORACLE SQL*PLUS
Related
I've had long running jobs fail due to network error (specific error below) while writing to a an endpoint via a OLE DB Destination.
I want to implement error handling regarding this network error and subsequently test the error.
I'm wondering if there is an easy way to throw an SSIS package error of a certain type at a predetermined time to test. Should be possible with MS's big push towards "Dev Ops".
There are some hacky ways I can imagine doing it like a script task, but I'm wondering if there is any built-in framework I'm just not aware of.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for
SQL Server" Hresult: 0x80004005 Description:
"[DBNETLIB][ConnectionWrite (send()).]General network error. Check
your network documentation.".
There is not much on MSDN regarding throwing specific errors to test your exception handling processes.
Exception Handling for connection errors-SSIS
I have an SSIS package (SQL 2017) that is importing data from an Access database to SQL Database.
It errors out with the following error:
[Source - MaintenanceDetails [140]] Error: Failed to retrieve long data for column "JobNotes".
[Source - MaintenanceDetails [140]] Error: There was an error with Source - MaintenanceDetails.Outputs[OLE DB Source Output] on Source - MaintenanceDetails. The column status returned was: "DBSTATUS_UNAVAILABLE".
[Source - MaintenanceDetails [140]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Source - MaintenanceDetails.Outputs[OLE DB Source Output]" failed because error code 0xC0209071 occurred, and the error row disposition on "Source - MaintenanceDetails" 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_PRIMEOUTPUTFAILED. The PrimeOutput method on Source - MaintenanceDetails returned error code 0xC0209029. 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've tried the following to resolve this based off other Stackoverflow questions which hasn't fixed the problem:
1) Setting a path for "BLOBTempStoragePath" and "BufferTempStoragePath"
2) Setting AutoAdjustBufferSize to False
3) Creating an Error Output to put failed errors into another tab
4) Setting "TypeGuessRows" to 0 for "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel"
5) I have tried using the Import/Export Wizard within Management Studio and I get the same error message.
The Connections are using:
Native OLE DB\Microsoft Office 12.0 Access Database Engine OLE DB Provider
Native OLE DB\SQL Server Native Client 11.0
Does anyone have any other suggestions for what I could try to resolve this?
What I ended up doing was as ppijnenburg described. Once I exported the Access table to a comma separated TEXT file, SSIS had no issue dealing with it at all.
I suppose the moral of the story is importing from Access to SQL Server is messy.
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 5 years ago.
Improve this question
For the past week I've been working on creating a package in SSIS that will extract, transform, and then load data from an Access database into a SQL Server database. Initially I created two separate packages to handle migrating bits of data from the same table in Access, transforming it, and then loading it into two different tables in SQL Server. Those worked on their own separately, but now I am trying to fold them into one package.
From what I've investigated, this is more than feasible (having a package with one data flow with two sources and destinations) but for some reason I can't get it to work. Looking into the error codes I got, people suggested using data conversion, but I previously had errors thrown at me regarding data types that I have solved using data conversion.
The errors that SSIS throws at me when I run the package are as follows:
Error: 0xC0202009 at Data Flow Task, InfoTable [52]: 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: "Unspecified error".
Error: 0xC020901C at Data Flow Task, InfoTable [52]: There was an error with InfoTable.Inputs[OLE DB Destination Input].Columns[Copy of Parameter] on InfoTable.Inputs[OLE DB Destination Input]. The column status returned was: "The value violated the integrity constraints for the column.".
Error: 0xC0209029 at Data Flow Task, InfoTable [52]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "InfoTable.Inputs[OLE DB Destination Input]" failed because error code 0xC020907D occurred, and the error row disposition on "InfoTable.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.
Error: 0xC0047022 at Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "InfoTable" (52) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (65). 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.
Thank you in advance for any help that can be given!
I was able to figure it out; it was due to the data I was trying to load that contained some null values. Normally this would be fine, but my SQL Server database (specifically the table that the data is being loaded into) is setup to not allow Nulls. I believe this is what was causing the issue even with the "allow nulls" on the OLE DB Destination > table or view - fast load checked.
The solution seems to be either fixing the SQL Server table to accept Nulls or not trying to load nulls into the table. I did the latter and everything worked ok (didn't even need a data conversion).
I can't say for sure without seeing everything in detail, but based on the error and your description of the problem, I suspect you have a foreign key relationship and some of that data is being loaded before the primary key gets loaded. If so, look at adding a precedence constraint to load the first table followed by the second using two separate data flows in the same package.
I'm working in a VBA module for Access that queries linked tables, generates reports based off the data, and then uses a PDF printer to save the reports to disk. There's a timer in the primary form that will, every N seconds, run an Access query against a "JOBQUEUE" table to see if there are new jobs.
If the database server becomes unavailable, this operation will of course time out. The run-time error of 3051 is being logged, and the loop will try to continue. The loop can't finish, however, because the following error comes right after the VB Run-Time error;
Title is "Microsoft SQL Server Login", so it's not within VB as far as I can tell.
Connection Failed:
SQLState: '01000'
SQL Server Error: 53
[Microsoft][ODBC SQL Server Driver][DBNETLIB][ConnectionOpen(Connect()).
Connection Failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not
exist or access is denied.
In every forum & discussion I've found that mentions this error, the asker is concerned with the cause of the error. In this case, I can assume that the error is temporary, and that it needs to continue trying to connect because the installation is unattended. Access goes into a "Not Responding..." state when it's timing out against the DB, and that's OK too, if connection is restored before it goes into the MsgBox described above, it will pick up where it left off and soldier on.
Does anyone know of a way that I can either mute that msgbox, preferably programatically, but I'd take anything at this point that can be done remotely that isn't an RDP session.
Edit: Link to image
The error I was getting was indeed not a run-time error that could be caught from code. Rather, it was SQL timing out after I already swallowed & dismissed time-outs in run-time in my VBA module.
The error does not seem to ever appear now that I have introduced a new timer that resets the loop that runs a query against my linked tables. It can't be logged & swallowed, but it can be prevented by being smarter about how I handle timeouts in run-time.
After a breakdown on my virtual webhost, they finally restored the container, but now I randomly get the error when I try to execute queries. I can do a
Select top 20000 from Orders
But
Select * from Orders (about 100k rows total)
Receives the error in my management studio:
A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)
And this error in my error log:
A read operation on a large object failed while sending data to the client. A common cause for this is if the application is running in READ UNCOMMITTED isolation level. This connection will be terminated.
I have googled the error and can see that it could be because "Lightweight pooling" is enabled, but this is not the case here.
I run mssql 2008 express on a windows 2003 server.
We get the same random issue on MSSQL where I work and (for us any way) its down to network issues (too much traffic and such).
This blog post by Michael Aspengren explains the error message "A transport-level error has occurred when sending the request to the server."