Update a row in oracle using OLEDB command(SSIS) - oracle

I am trying to update some rows in an oracle Database, using an OLEDB Command
but whenever i try specifying the Sql Command this is what i get
An OLEDB record is available. Source: "OraOLEDB" Hresult:0x80040E51 Description:
"Provider cannot derive parameter information and
SetParameterInfo has not been called."
I have tried using
"Native OLE DB\Oracle Provider for OLE
DB" provider
and i tried changing to
"Native OLE DB\Microsoft OLE BD Provider for Oracle" provider
but i get the same error, please help,
I am using ssis 2008
Here is the setup : The Connection Manager is as below
When i test it, it succeeds
Now when i come to configuring the OLEDBCommand., I pass in the Connenction Manager
specify the command
now when i move to configure the parameters, nothing is displayed and i receive this error
thanks for the help

Under Input and Output Properties you need to add the column names under OLE DB Command Input > External columns, they will then appear in the column mappings page.

Related

Hw to get rid of ORA-01008

While trying to code in VS 2019 (making utility to select data from Oracle DB) I got stuck.
I created DataSet with TableAdapter to it Pic0
In a query I must enter value for APPLICATION_NUMBER field, and when I "Execute Query" everything works fine and I get result (see Pic1)Pic1
But when I try to "Preview Data", I got error "ORA-01008: not all variables bound"
(see Pic2)
Just for info: it is Oracle 9i I am trying to connect to, I am using .NET Framework Data Provider for OLE DB because if I use .NET Framework Data Provider for Oracle it says "Connections to this server version are no longer supported".
Would appreciate much any useful info.
I tried to replace :PARAM2 with '&PARAM2' but with no luck.

HY010 Oracle ODBC Function sequence error in SSIS?

I created an SSIS package to copy data from one Oracle table to another Oracle table. Each table is in a different database.
I'm getting this error for every single column of the source table:
ERROR [HY010] [Oracle][ODBC]Function sequence error
This is the screenshot.
I have no idea what this means. I've also researched but I haven't seen anything that has helped me.
How can I fix this? I did read that an alternative is to create a linked server.
I wanted to add that the ODBC driver was created with a relatively recent Oracle 12 driver, so I'm not sure why VARCHAR2 columns would not be supported.
Also wanted to point out that the Windows server where the Oracle DB is 64-bit (Windows Server 2008) and Visual Studio 2008 (where the SSIS package is created) is 32-bit. That's why the driver has "_32" at the end.
Based on the following documentation:
The error occurs when ODBC functions are called out of the order required by the ODBC Specification.
The error can also occur if an ODBC function call returns an error and the application continues making ODBC calls that require the previous ODBC call to succeed.
I think you should check that all columns data types are supported by the ODBC driver.
Similar questions
MS-Oracle ODBC Driver Function Sequence Error
Update 1
You can refer to the following link to learn more about supported data types:
Oracle® Database Gateway for ODBC User's Guide - Data Type Conversion
Note that in the link above they mentioned that:
If a table contains a column whose data type is not supported by Oracle Database Gateway for ODBC, the column information is not returned to the Oracle database.

Using a oracle data adapter to deploy and fill reports on jasperserver

I have a oracle dataadapter that is a datasource on jasperserver.
But when I create a report using this adapter, it does not preview or fill the report on Jaspersoft Studio and JasperReports Server. Is there anyway I can create a new oracle dataadapter for testing purposes. I have downloaded odjc7.jar. But when I create a driver path to this file. I recieve a error Reason:java.sql.SQLRecoverableException: IO Error: Unknown host specified
Any details to whether oracle datasource can fill reports would be much appreciated and any details to creating a new oracle dataadapter.
If your link is correct and already works on other pcs/servers, then the error is in the connection to the database.
Check your connection to the database. Open a SQL-Developer tool and try to connect to the database.
Check if you really did add the driver to the data adapter:
It should look like this:
If you didn't provide the right driver it will not work!
Recheck your ojdbc7.jar. Maybe download it again from an official source. Also sometimes the ojdbc7.jar leads to some unknown errors. At a Jaspersoft Roadshow they recommended to still use the ojdbc6.jar.

Visual Studio 2013 SSIS OLE DB Destination (Access via Connection Manager) SQL Command Issue

Afternoon Folks,
We are using Visual Studio 2013 and have an SSIS package that we are creating. We have a simple Data Flow Task that essentially takes some data from SQL and Pushes through to an Access Database. It has three DFD flow items:
I have a OLE DB Source (obtains the SQL via a select statement) --> Data Conversion (Convert SQL Data Types to Access) --> OLE DB Destination (Access Database)
The steps selecting the SQL and converting it works fine.
The issue we have is the SQL command that we are using to update the Access 2010 database.
We have tried to run and create a simple UPDATE statement to update a couple of fields with hardcoded data, but this doesn't update. We have also tried creating a stored procedure and then executing this within the SQL Command line in the OLE Destination Editor.
We can see from posts on the net that we can create a procedure in access 2010 and use this. We are also using Native OLE DB\Microsoft Office 12.0 access Database Engine OLE DB Provider. This connection tests successfully.
We can write a SELECT statement within the SQL Command line and this does pull back data. We just seem to have a problem with the UPDATE and or Create Procedure. In turn we are unable to populate the Mappings. the mappings display the destination box but no fields are displayed within here.
We have had a good look around on the internet but we are struggling to find a solution.
Here is a sample of the code in the form of the update statement we are trying to get working.
UPDATE ReferenceFields
INNER JOIN Addresses
ON ReferenceFields.ID = Addresses.ID
SET ReferenceFields.Reference2 =CustomerName,
ReferenceFields.Reference3 = telephone
WHERE Addresses.UPRN = 12345678910
If I Parse the query it is successful but when I select Mappings a warning is displayed....
Error at Data Flow Task [OLE DB Destination [136]]: No column
information was returned by the SQL command
https://msdn.microsoft.com/EN-US/library/office/ff845861.aspx
https://msdn.microsoft.com/en-us/library/ms141044.aspx
SSIS OLEDB destination with SQL command (Insert if not exists)
After some time I have managed to answer this question myself.
I have added unique parameters to each field I need to update and used the # char to set this.
UPDATE ReferenceFields
INNER JOIN Addresses
ON ReferenceFields.ID = Addresses.ID
SET ReferenceFields.Reference2 = #CustomerName,
ReferenceFields.Reference3 = #telephone
WHERE UPRN = #UPRN
This runs through the code and updates the MS Access database.

How do I set the SDE version in SSIS dataflow source

I have a GIS oracle database and I am needing to reference in a SSIS dataflow task. Ideally I would normally do something like this (which works perfectly in Oracle SQL Developer):
execute sde.version_util.set_current_version('SAFE.mvedits')
SELECT CAD_EVENTID
FROM SAFE.INCIDENT_POINT_MV
however when I try to use that as the SQL command of my OLE DB Datasource it throws me an "Invalid SQL" error.
How do I set the SDE version in a SSIS dataflow task data source?
Knowing nothing of nothing on Oracle, what you might try is
In your Oracle Connection Manager, change the property RetainSameConnection to True. This means that all connections will Oracle will use the same thread.
Add an Execute SQL Task before your Data Flow that talks to Oracle. Use your query there to modify the current version thing. This setting should be persisted on the connection.
In your OLE DB Datasource, start with the SELECT statement.
You might need to set DelayValidation to true as well.
If that's not working, let me know and I'll see if I can come up with anything else.
As it turns out this is a shortfall of interacting with GIS Oracle databases through thirdparty applications. In my situation we addressed it by just bundling the change up in a stored procedure that lives on the oracle server and invoking that stored procedure from inside SSIS.

Resources