Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

SSIS - OLE DB Source task Error Expand / Collapse
Author
Message
Posted Thursday, September 27, 2012 12:29 AM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Today @ 1:02 AM
Points: 1,020, Visits: 1,290
I am using SSIS package to read the data from Access file and import them to SQL Server table. I have total 10 tables that I need to migrate / import to SQL Server. I am using OLE DB Source & OLE DB Destination tasks for this requirement. SSIS Package is working fine and perform the required tasks.

I am using OLE DB Source task to read the data by providing following:
OLE DB Connection Manager: AccessDB Connection
Data access mode: Table or View
Name of the table or the view: tableName

Now, I need to add one more table but it may not present in all the accessdb (mdb) files. Because of table is not present, OLE DB source task throws an error but I would like to ignore that error, insert default data to SQL Server table and go ahead with other tasks.

How can I achieve this functionality in SSIS package?


Thanks
Post #1365049
Posted Thursday, September 27, 2012 2:30 AM


SSCarpal Tunnel

SSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal Tunnel

Group: General Forum Members
Last Login: Monday, July 21, 2014 11:49 PM
Points: 4,973, Visits: 11,660
Hardy21 (9/27/2012)
I am using SSIS package to read the data from Access file and import them to SQL Server table. I have total 10 tables that I need to migrate / import to SQL Server. I am using OLE DB Source & OLE DB Destination tasks for this requirement. SSIS Package is working fine and perform the required tasks.

I am using OLE DB Source task to read the data by providing following:
OLE DB Connection Manager: AccessDB Connection
Data access mode: Table or View
Name of the table or the view: tableName

Now, I need to add one more table but it may not present in all the accessdb (mdb) files. Because of table is not present, OLE DB source task throws an error but I would like to ignore that error, insert default data to SQL Server table and go ahead with other tasks.

How can I achieve this functionality in SSIS package?


I can suggest a way in outline, at least.

1) Create a package-scoped variable (TableExists, or similar) - make it a byte or small integer.
2) Create an ExecuteSQL task which 'points' to the Access database.
a) (I'm a SQL Server guy, so this is the bit you'll need to expand on) Write a query to return 1 if the table exists, 0 otherwise.
b) Return the results of the query to the variable created in (1).
3) After your ExecuteSQL task, create a precedence constraint to the data flow task for the table which may or may not exist.
a) Change the Evaluation operation to Expression and Constraint.
b) Set the Expression to something like
@[User::TableExists]==1
c) Create another precedence constraint from the ExecuteSQL task which skips the data flow task. Its Expression will be something like
@[User::TableExists]!=1



Help us to help you. For better, quicker and more-focused answers to your questions, consider following the advice in this link.

When you ask a question (and please do ask a question: "My T-SQL does not work" just doesn't cut it), please provide enough information for us to understand its context.
Post #1365091
Posted Thursday, September 27, 2012 2:55 AM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Today @ 1:02 AM
Points: 1,020, Visits: 1,290
Phil Parkin (9/27/2012)
Hardy21 (9/27/2012)
I am using SSIS package to read the data from Access file and import them to SQL Server table. I have total 10 tables that I need to migrate / import to SQL Server. I am using OLE DB Source & OLE DB Destination tasks for this requirement. SSIS Package is working fine and perform the required tasks.

I am using OLE DB Source task to read the data by providing following:
OLE DB Connection Manager: AccessDB Connection
Data access mode: Table or View
Name of the table or the view: tableName

Now, I need to add one more table but it may not present in all the accessdb (mdb) files. Because of table is not present, OLE DB source task throws an error but I would like to ignore that error, insert default data to SQL Server table and go ahead with other tasks.

How can I achieve this functionality in SSIS package?


I can suggest a way in outline, at least.

1) Create a package-scoped variable (TableExists, or similar) - make it a byte or small integer.
2) Create an ExecuteSQL task which 'points' to the Access database.
a) (I'm a SQL Server guy, so this is the bit you'll need to expand on) Write a query to return 1 if the table exists, 0 otherwise.
b) Return the results of the query to the variable created in (1).
3) After your ExecuteSQL task, create a precedence constraint to the data flow task for the table which may or may not exist.
a) Change the Evaluation operation to Expression and Constraint.
b) Set the Expression to something like
@[User::TableExists]==1
c) Create another precedence constraint from the ExecuteSQL task which skips the data flow task. Its Expression will be something like
@[User::TableExists]!=1

I have a query that check the table exists in Access database as below:
SELECT count(*) as TableExists
FROM MSysObjects
WHERE MSysObjects.Type=1
and Name = "tblName"
But, when I use this in SQL Task, SSIS throws an error:
"
[Execute SQL Task] Error: Executing the query "SELECT count(*) as TableExists
FROM MSysObjects
WH..." failed with the following error: "Record(s) cannot be read; no read permission on 'MSysObjects'.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
"
I have checked result set, connection are all proper but still SSIS is throwing an error.

Any idea?


Thanks
Post #1365099
Posted Thursday, September 27, 2012 3:00 AM


SSCarpal Tunnel

SSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal Tunnel

Group: General Forum Members
Last Login: Monday, July 21, 2014 11:49 PM
Points: 4,973, Visits: 11,660
Is the ResultSet property of the ExecuteSQL task set to SingleRow?

Have you mapped 'TableExists' to your package variable on the Result Set property page?



Help us to help you. For better, quicker and more-focused answers to your questions, consider following the advice in this link.

When you ask a question (and please do ask a question: "My T-SQL does not work" just doesn't cut it), please provide enough information for us to understand its context.
Post #1365102
Posted Thursday, September 27, 2012 3:11 AM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Today @ 1:02 AM
Points: 1,020, Visits: 1,290
Phil Parkin (9/27/2012)
Is the ResultSet property of the ExecuteSQL task set to SingleRow?

Have you mapped 'TableExists' to your package variable on the Result Set property page?

Yes Phil. It is SingleRow and result set mapped to package variable.
Result set page setting:
Result name: 0
Variable Name: User::AccessTable


Thanks
Post #1365112
Posted Thursday, September 27, 2012 3:28 AM


SSCarpal Tunnel

SSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal Tunnel

Group: General Forum Members
Last Login: Monday, July 21, 2014 11:49 PM
Points: 4,973, Visits: 11,660
Hardy21 (9/27/2012)
Phil Parkin (9/27/2012)
Is the ResultSet property of the ExecuteSQL task set to SingleRow?

Have you mapped 'TableExists' to your package variable on the Result Set property page?

Yes Phil. It is SingleRow and result set mapped to package variable.
Result set page setting:
Result name: 0
Variable Name: User::AccessTable


Try changing ResultName to TableExists (to match the column name in your query).



Help us to help you. For better, quicker and more-focused answers to your questions, consider following the advice in this link.

When you ask a question (and please do ask a question: "My T-SQL does not work" just doesn't cut it), please provide enough information for us to understand its context.
Post #1365114
Posted Thursday, September 27, 2012 3:33 AM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Today @ 1:02 AM
Points: 1,020, Visits: 1,290
Phil Parkin (9/27/2012)
Hardy21 (9/27/2012)
Phil Parkin (9/27/2012)
Is the ResultSet property of the ExecuteSQL task set to SingleRow?

Have you mapped 'TableExists' to your package variable on the Result Set property page?

Yes Phil. It is SingleRow and result set mapped to package variable.
Result set page setting:
Result name: 0
Variable Name: User::AccessTable


Try changing ResultName to TableExists (to match the column name in your query).

Phil, Checked with that option. No luck yet.
SSIS throws same error.

I dont have Access installed in my box. Is it the issue?


Thanks
Post #1365115
Posted Thursday, September 27, 2012 3:40 AM


SSCarpal Tunnel

SSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal TunnelSSCarpal Tunnel

Group: General Forum Members
Last Login: Monday, July 21, 2014 11:49 PM
Points: 4,973, Visits: 11,660
Hmm - it seems that I have had a go at helping someone solve this issue in the past - check here.

It would seem to be a problem specifically related to permissions on system tables.



Help us to help you. For better, quicker and more-focused answers to your questions, consider following the advice in this link.

When you ask a question (and please do ask a question: "My T-SQL does not work" just doesn't cut it), please provide enough information for us to understand its context.
Post #1365118
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse