Welcome to blogs.conchango.com Sign in | Join | Help

Welcome to blogs.conchango.com

SSIS Junkie

SSIS: Big improvements to Lookup in SQL Server 2008

I awoke this morning to find my inbox full of automated replies from msftconn@microsoft.com thus indicating that someone on the SSIS team has been busy updating many of my submissions to Connect. Generally it was the usual "Closed, Won't Fix" update (grrr) but there was some good news about the following four submissions:

 

Title: Case insensitive LOOKUPs

Description: LOOKUP component always does case sensitive comparisons. If you are using a case-insensitive RDBMS (which by default, SQL Server is) then you can get incorrect results and if you are using the component to determine new rows then you can get PK violations (which I have just got)

Proposed Solution: Have an option on LOOKUP component for case insensitive comparisons

Status: Resolved (Fixed)

 

Title: LOOKUP component must be populated from more than just a SQL statement

Description: Currently have a situation where we have to do a lookup. Unfortunately the data is sourced from a web service rather than a DB table.
The LOOKUP component cannot be used because that can only do lookups from a relational source. This is one of many MANY shortcomings in the LOOKUP component.

Proposed Solution: Loads of potential ways. Most obvious is to allow lookups from a web service, or perhaps from an XML file. Another way around this (and one which I like) is to populate the LOOKUP from a recordset stored in an object variable. This really does open up the functionality because the recordset can basically be populated from anywhere using the recordset destination component.

Status: Resolved (Fixed)

 

Title: Lookup cache is unnecassarily repopulated in a loop

Description: If you have a LOOKUP inside a data-flow task inside a For/ForEach Loop then the cache for that LOOKUP will be getting populated on each loop iteration with (almost) exactly the same data. This seems pointless. Why redo work? Can't we keep the cache populated inbetween iterations?

Proposed Solution: Keep the cache populated between iterations. There would be problems if each loop iteration causes the cache data to be changed but you need to find a way around this. Dynamic Lookup Caches a la Informatica would solve the problem.

Status: Resolved (Fixed)

 

Title: Enhancements to LOOKUP

Description: A few problems with LOOKUP component:
1) Cannot set SQL statement that populates the LOOKUP cache dynamically. This means you cannot dynamically filter teh data in the cache - it would be a good idea to be able to do this. More info here: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=147457&SiteID=1
2) There is no AlwaysUseDefaultCodePage roperty which there is if you use OLE DB Source. This is a problem if you're going against Oracle because a code page warning is automatically generated

Proposed Solution: 1) Put a property expression on SQLCommand property
2) Add a AlwaysUseDefautlCodePage property
Discussed at length here: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=147457&SiteID=1

Status: Resolved (Fixed)

 

There's a clear pattern here. There are big improvements to the way we do lookups from within a dataflow task in SSIS2008. Given that these submissions have now been closed I'm hopeful they'll be in the next CTP.

-Jamie

Published 21 August 2007 20:25 by jamie.thomson

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Phil Brammer said:

Sweet!  Good news and thanks for the update.

August 22, 2007 14:39
 

Mallikarjun said:

Are these transformations included in June or July CTP?

August 23, 2007 07:55
 

Jason Haley said:

August 23, 2007 15:13
 

jamie.thomson said:

Mallikarjun,

No. As I said above I hope they'll be in the next one.

August 23, 2007 16:17
 

Shiva said:

Hi Jamie,

Particularly happy to know that the lookup is now going to allow lookups to non SQL datasets also now.

Thanks,

Shiva

August 28, 2007 02:27
 

Michael Entin said:

I think there is some miscommunication regarding case-insensitive lookups. This improvement was actually cut due to time constraints. Sorry.

Other stuff is "in" and will be available in CTP6.

September 5, 2007 08:24
 

Technical Musings said:

SQL Server 2008 will be coming out sometime this summer (in theory). At last week's TechFuse event in Minneapolis, and in blogs I sometimes read, I've started to pick up on a number of useful features and improvements that should...

March 4, 2008 16:16
 

Bhavesh said:

Brilliant web site for info

May 24, 2008 15:41
 

Simon Barter said:

Jamie,

These "Enhancements to LOOKUP" aren't in the release of SQL Server 2008 Developer Edition. Have you heard any other details on those changes and if/when they are coming?

For my application I need to use parameters to look up values in an Oracle data source.

When I setup the lookup it gives me the warning:

"Cannot retrieve the column code page info from the OLE DB provider.  If the component supports the "DefaultCodePage" property, the code page from that property will be used."

There is no sign of the "AlwaysUseDefaultCodePage" for a lookup like I was hoping as that does fix it on an OLE DB Source.

The other option would be to allow a dynamic SQL statement that can be set at run-time (although less desirable).

We built a custom script to do the lookup but that causes a significant performance hit.

Do you have any suggestions as to the best way to deal with this issue?

Thanks,

Simon

September 5, 2008 21:24
 

jamie.thomson said:

Hi Simon,

Check out a later post than this one for more info:

Lookup component gets a makeover

(http://blogs.conchango.com/jamiethomson/archive/2007/11/16/Katmai_3A00_-SSIS_3A00_-Lookup-component-gets-a-makeover.aspx)

As far as I know there's no fix for that warning although I stand to be corrected. Of course, it IS only a warning and you can safely ignore it.

-Jamie

September 7, 2008 19:52
 

pyelpo said:

Hi Jamie...

I am using SSIS 2005, and I am having probs with Fuzzy Lookup..maybe you can answer my doubt... I have to use dynamic Reference tables..and I tried to put a User Variable in the Properties but is not working at all... I was reading in diff sites that is like an "issue"...that I should use a static Ref Table... Do you hace an idea if I have a workaround in SSIS2005 for that?

Thx...Patricia.

September 10, 2008 16:33

Leave a Comment

(required) 
(optional)
(required) 
Submit

This Blog

Syndication

Powered by Community Server (Personal Edition), by Telligent Systems