SSIS fuzzy lookup with multiple outputs per lookup error - ssis

I have a pretty simple SSIS package with 3 components:
OLE DB Source
Fuzzy Lookup
OLE DB Destination
In the fuzzy lookup component I changed in the advanced tab the "Maximum number of matches to output per lookup" from 1 to 2.
When I run the package after the change I get this error message:
[OLE DB Destination [57]] 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 Native Client" Hresult: 0x80004005 Description: "OLE DB provider 'STREAM' for linked server '(null)' returned invalid data for column '[!BulkInsert]._Confidence'. "
Changing the number back to 1 works again. The OLE DB Source has around 45000 rows and the lookup has around 580000 rows.
I don't know how to address this problem further, so any help is appreciated!
Thanks
Daniel

I solved the issue:
The confidence column has to have the data type "float" and not "real".
Daniel

Related

SSIS Package to copy data from one to another error

I have setup a SSIS package to copy over some data from one table to another. At first I tried doing from one server to another server, did not succeed. Then I tried it doing within the same server, no luck again. I followed couple tutorials/videos how to do it and followed the exact pattern.
However here's what I tried to do:
Create a "Data Flow Task"
Under "Data Flow" tab create an "OLE DB Source" and "OLE DB Destination"
Configure the "OLE DB connection manager" and setup the column mapping, verify connection status for both source and destination
When I run the package I get following errors
Here are the 5 errors that are in the above figure,
[OLE DB Destination 2] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "STLEDGSQL01.MES_DEV" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
[SSIS.Pipeline] Error: OLE DB Destination failed validation and returned error code 0xC020801C.
[SSIS.Pipeline] Error: One or more component failed validation.
Error: There were errors during task validation.
[Connection manager "STLEDGSQL01.MES_DEV"] 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: "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Client unable to establish connection".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Registry information is corrupt or missing. Make sure the provider is installed and registered correctly.".
Now I have tried applying couple of solution that I found in stackoverflow and out in the internet, such as following but nothing helped me so far.
Set delay validation property at package level to True from false
Change ProtectionLevel to EncryptSensitiveWithUserKey
Any help is greatly appreciated!
For anyone who's interested or had the same issue as mine, I just found the answer. I was using the wrong TargetServerVersion in project properties. My SQL server is 2016 and it was defaulted to 2019 automatically in this property page. I did change it back to 2016 and yes it all starts working.
I suggest that you do not use SSIS to move data around inside a database. Just use a stored prcedure or script. Here is a sample script that will copy data from one table to another, but only for data that doesn't exist in the target.
insert into targettable (PrimaryKeyColumn,Column1,Column2,Column3)
select PrimaryKeyColumn,Column1,Column2,Column3
from sourcetable SRC
where not exists (
select *
from targettable TGT
where TGT.PrimaryKeyColumn = SRC.PrimaryKeyColumn
)

SSIS - error while load into fact table

I'm trying to load some data from OLE DB database with related dimensions into my fact table (which have primary keys of this dimensions) using SSIS and I'm getting some error like this:
[F_Sales [132]] 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: "Unspecified error".
[F_Sales [132]] Error: There was an error with F_Sales.Inputs[OLE DB
Destination Input].Columns[Customer_ID] on F_Sales.Inputs[OLE DB
Destination Input]. The column status returned was: "The value
violated the integrity constraints for the column."
I'm a beginner in SSIS but it doesn't make sense that there is some Customer_ID which is NULL because this column is auto increment.
Does anybody know solution of that problem?

SSIS 2014 Lookup Transformation with SQL Server Destination

I am trying to implement a Lookup Transformation in SSIS 2014 to load "no match output" into "SQL Server Destination", but I got errors at runtime:
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Test dataflow" (58) failed with error code 0xC02020C7 while processing input "SQL Server Destination Input" (74). 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.
As source task the "OLE DB Source" is used.
The Lookup Transformation uses the no cache mode.
In "SQL Server Destination"-Task: "Table lock" and "Check constraints" are checked and the timeout is set to 30.
What am I doing wrong? Could please someone help to solve this error?
Per my knowledge you cannot use SQL Server Destination while loading data, coming from Lookup Transformation.
You need to use OLE DB Destination.

SSIS package will succeed with one table, but not all?

Forgive my inexperience with this subject as this is the very first SSIS package I have created. The goal is to basically copy the schema/data from an Access DB into SQL Server. I use the import/export wizard in BIDS to create (there are 470 tables total). If I script it to do only one table, the job runs and executes the package, and is successful. When I try all tables I am given this error:
Executed as user: DOMAIN\USER. Microsoft (R) SQL Server Execute Package Utility Version 10.50.2500.0 for 32-bit Copyright (C) Microsoft Corporation 2010. All rights reserved. Started: 11:47:53 AM Error: 2012-07-16 11:48:03.65 Code: 0xC0202009 Source: Data Flow Task 1 Destination - Account [55] Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E37 Description: "Invalid object name 'dbo.Account'.". End Error Error: 2012-07-16 11:48:03.65 Code: 0xC0202040 Source: Data Flow Task 1 Destination - Account [55] Description: Failed to open a fastload rowset for "[dbo].[Account]". Check that the object exists in the database. End Error Error: 2012-07-16 11:48:03.65 Code: 0xC004706B Source: Data Flow Task 1 SSIS.Pipeline Description: "component "Destination - Account" (55)" failed validation and returned validation status "VS_ISBROKEN". End Error Error: 2012-07-16 11:48:03.65 Code: 0xC004700C Source: Data Flow Task 1 SSIS.Pipeline Description: One or more component failed validation. End Error Error: 2012-07-16 11:48:03.65 Code: 0xC0024107 Source: Data Flow Task 1 Description: There were errors during task validation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 11:47:53 AM Finished: 11:48:03 AM Elapsed: 10.562 seconds. The package execution failed. The step failed.
The first step in the job drops all tables from the DB.
EXEC sp_msforeachtable 'DROP TABLE ?'
The second step executes the package.
I've looked all over online and haven't been able to find a solution. Any help would be appreciated, thanks!
You have to set delay validation property to true for the second execute SQL task.
This took me ages - over a period of months - to nut out.
I was running three SQL tables of data into three Excel sheets in a single workbook. I had all manner of problems with corrupted data - between sheets, even - and OLE errors along with many of the other intermittent errors that people have search for in these threads.
In the end, the issue was that I had the three data flows embedded within a single Data Flow. In hindsight, I guess it was obvious that this would be a problem, but me, being new to SSIS, figured that the processing would be ironed out deeper down. Wrong.
Once I separated the flows into three consecutive Data Flows, everything was fine.
Postscript: After messing about with SSIS over the course of this project I'm convinced that it's probably one of the ropiest pieces of MS product I've come across. Sooooooo much manual configuration - and re-configuration when SSIS suddenly undoes all your tedious work! - changing of data types, connecting this to that. Just horrible. Recommendation: Avoid if possible.

"Not enough storage" Error When Trying To Select Destination Table in SSIS

I am building an SSIS package and getting an error when setting "Name of the table or the view" in the OLE DB Destination editor.
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred.
Error code: 0x8007000E. An OLE DB record is available.
Source: "Microsoft SQL Native Client 10.0" Hresult: 0x8007000E
Description: "Not enough storage is available to complete this operation.".
Failed to open a fastload rowset for "[dbo].[MyTable]".
Check that the object exists in the database.
Exception from HRESULT: 0xC0202040 (Microsoft.SqlServer.DTSPipelineWrap)
But, the table is definately there.
What could be causing this error?
Try saving the package and exiting from BIDS. Then start again, and try fixing the destination component.
It's only complaining about the table because it was in the process of handling that table at the time of the Out of Memory exception. It has a one track mind about that - failure setting up table == table does not exist.