I was recently asked to take a look at and review a new book titled “SQL Server Integration Services Using Visual Studio 2005″ released in December of 2007 through PACKT Publishing. As I am always looking for good reference materials, and because I am currently in a position where I will be introducing Integration Services to folks untrained in the fine art of SSIS in the near future, I jumped at the chance.

The book was a fast read (about 4 days, a few hours a day) and contained many of the most common Control Flow and Data Flow Tasks. The author gives context for each task by providing some examples on when they should be used. The author also takes some time orienting the user to BIDS by providing definitions and several pages of menu and other UI feature descriptions.

But with that said:

  • The book was a fast read because more than half of its 296 pages were devoted to screenshots (not a scientific calculation, but about half is how it felt).
  • In many cases, the common tasks demonstrated where done in a vacuum, not allowing a beginner to get an idea of how multiple tasks can work together to provide a more complete solution. I know this is a beginner guide, but surely we could start small and build into something big?
  • The context provided for each task is in the form of an example situation which is nice, but does not give a beginner enough to go on in order to know that a particular task is right for the job they need done.
  • BIDS and VS share the same shell. Why not just say that right away and then call Visual Studio BIDS instead? All the other books and reference materials I have come across use “BIDS” and not “Visual Studio”. I suppose this is a bit of a pet peeve of mine!
  • Many definitions were inadequate or did not really define the subject. A great example is the OLEDB Command! I’m not even sure what the definition refers to. He writes: “Parameterized queries are a powerful means to extract just the information needed to satisfy a given criteria. You would use a parametric query when you try finding patient information, given the patient-ID from a patient database. This transformation requires a data flow task, and an OLEDB data source or a flat file source.” That is word-for-word. Of course, the OLEDB Command merely executes an SQL command for each row in a dataset!
  • The UI orientation was awkward at best. I don’t feel that the author did a good enough job of describing how the menus and toolbars change depending on the user’s view and context.

There are problems on multiple fronts: (a) grammar, (b) style, (c) consistency, (d) completeness, (e) conciseness, and most importantly (f) technical accuracy. See my review on Amazon for some details.

For another example, on page 124, the author writes about preparing a flat file for the Bulk Insert Task:

Normally, this file should be available, as this is the starting point. Since this is just a demo, we will be using a file with 10 rows, of which the 1st row is a column header, a ludicrously small file for this heavy weight tool. This file can be created with a text editor such as notepad, but usually, it is resident in legacy data stores.

What if the file is not available? Is it really ludicrous to import 10 rows into SQL Server using SSIS? Couldn’t modern applications produce delimited files?

Unfortunately for the reader, most paragraphs read this way. I know and understand what the author is trying to say, but for a beginner (which is who this book is designed for) a paragraph structured in this way will undoubtedly stand in the way of his or her learning. I found myself having to read paragraphs like this two or three times to understand them.

What I found odd was an entire chapter dedicated to the Active X Script Task. Even the author admits that the task is only included for backward compatibility. According to BOL:

This feature will be removed in the next version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.

So I really, really have to wonder why on earth this would be given any attention at all in a beginner’s book!

Also, what about more information regarding precedent constraints, variables, logging, error handling, parent packages, configuration files, connection managers, data sources, data source views, the expression builder, and the like? I don’t consider any of these items beyond the scope of a beginner’s book, and in fact, if a beginner is not armed with this basic information, their packages are likely not to be very maintainable, scalable, or functional!

My Recommendation?

Although I found this book lacking in many areas, others who have reviewed it think otherwise. Please take a moment and read the reviews at Amazon for more details (mine included).

As data integration projects are very likely to fail or run way over budget and time, it is critical that beginners have a proper understanding of the tool they are about to use. If they are using SSIS as part of a data warehousing project to deliver Business Intelligence (as opposed to writing maintenance plans and MSMQ applications for example), then it is also critical that the beginner is armed with the proper theories and best practices to best position him or her for data integration success. This book does not provide this understanding and reads more like a help file or cookbook.

Closing thoughts

It was difficult for me to write this review. As an author, blogger, and musician though I feel that good constructive feedback/criticism is essential for growth and continuous improvement (sort of like how an ETL developer should approach his or her data integration project each day!). I’ve been the recipient of plenty of negative reviews, and with each, I’ve managed to get better. Lastly, to the great credit of Packt Publishing, whom I contacted before writing this entry here and on Amazon, they told me to go ahead and give my honest assessment.

Other reviews of this book include:

Tags: , , , ,