Tuesday, March 27, 2012

Error Executing Parallel SQL Tasks

I have three SQL tasks executing in parallel in an Integration Services package.

+-B-+
A-+-C-+-E
+-D-+

It starts with task A; then B, C, and D all execute in parallel; and finally task E runs after BCD are done.

B, C, and D are all Execute SQL tasks, all with the same connection manager. Here is their code:

B) SELECT CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS Process
FROM temp_B

C) SELECT CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS Process
FROM temp_C

D) SELECT CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS Process
FROM temp_D

Each one is setting a binary value to a package variable (using Result Set settings) based on the count of records from different tables.

This works with no problems when I run it against one server (development). But when I switch to the production server, task B and D both fail. I'v checked to make sure all of the temp tables exist in the database for that connection manager and that all three have the same connection manager - all is okay.

Here's the trickier part. When I'm still pointing to the production server and I run these tasks individually, they are all successful. It is only when they are attempting to run in parallel that they fail.

Here is the Output error:
Error: 0xC002F210 at Process Med?, Execute SQL Task: Executing the query "SELECT CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS Process FROM temp_B" failed with the following error: "Invalid object name 'temp_B'.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

What could be causing this? I'm at a loss.

Why do they fail? Do you have an error message?

-Jamie

|||Sorry Jamie - I neglected to put in the error message at first. It's now in the original post.|||

perhaps the error message is a red herring. Can you use Profiler to check that everything is OK when the tasks get fired.

That's just an idea for diagnosis. I'm at a a loss as to what the problem might be!

-Jamie

|||

Problem solved.

Sorry about the errant post - it was actually not a parallel issue.

One of the previous steps changed the conenction manager's database setting and was doing it incorrectly. The tasks were hitting a false database. Not sure why task C didn't fail - but it's moot.

Thanks for your help.

No comments:

Post a Comment