During that session, John showed a custom component he'd made to help with the unavoidable problems around pushing UPDATEs to a SQL table. If you've used SSIS, you know that in those circumstances where you need to update existing records in a table, your only simple tool happens to be the Ole DB Command transform. The problems you run in to with the Ole DB Command are (unfortunately) plentiful:
- It is slow. The transform operates (as it should) on a row-by-row basis, issuing your manually typed-in command once per row to the database. The net effect: one "round trip" per row. Even if your database is running on a Cray, if it's 10ms away down the network, processing 100,000 rows will take over 16 minutes.
- It is cryptic to set up parameters. The whole deal of mapping columns to "param0" is just, IMHO, insanely bad.
Good news for you out there that are less than enamored with the Ole DB Transform - you now have two alternatives. One is the Batch Destination that John demoed and autopsied at the conference, and another is the Merge Destination that Matt Masson and the MS SSIS team constructed. They're both appropriate for different scenarios and constraints. Read more about those on John's blog.
During some discussions with John, I lamented the fact that there didn't seem to be a central place where a person could go to find out what solutions the community had generated to fill out the capabilities of Integration Services. I happened to be shocked that nobody had created (what I'd consider) a "real" SCD component - but then again, even after searching the internet, I couldn't really be sure - because you never really know what keywords these things might get tagged with. What I wanted was some kind of a directory (Apple fans might call it an AppStore) that contained searchable listings of components. John had the idea of creating a project on CodePlex to do that - since a great deal of custom components were hosted there anyway. The only drawback to that idea was that you can't create a project on CodePlex without source code, but John's now fixed that - he's uploaded his Batch Destination component there.
So if you ever run into a situation in SSIS that seems "too complicated", search the >SSIS Community Tasks and Components project on CodePlex - there may be a solution there for you. If you find an open source component that we don't happen to have listed, please post it and help your community. And most of all, if you have a situation that you've "solved" through a complicated Script, or through use of multiple other components - and you use that "solution" frequently, add an Issue to the project with a description, and some enterprising individual may undertake to package it up in a custom component...
Hey Todd,
ReplyDeleteThere is actually already a public repository where you can post scripts and solutions for different problems here:
http://www.cozyroc.com/search-scripts
They are based on CozyRoc Script Task Plus, giving you reusability and user interface. And it doesn't require building custom tasks, which you have to agree is complicated.
It certainly isn't easy! I haven't used that component to reuse scripts (yet). But it looks interesting, as well as a lot of the other components CozyRoc offers...
ReplyDelete