This is the first SQL Server book that I can call a "real" programming book. It's not surprising that it comes from Addison-Wesley, the most prominent publisher of such books. In the spirit of Kernighan and Ritchie, Pike, Thomas and Hunt, Jon Bentley, and Erich Gamma, this is a thinker's Transact-SQL programming book.
It begins with a wonderful overview of all that is worth knowing about stored procedure programming in Transact-SQL. This is the best "in a nutshell" discussion I've seen of stored procedure programming. It is better than most whole books dedicated to the subject.
It moves on to coding conventions and source code management, two oft-neglected topics in the world of SQL Server. For some reason, most of us don't usually treat Transact-SQL as though it were true source code, but Henderson makes the compelling case that it is indeed, and he has convinced me.
Next, is one of the crown jewels of the book: design patterns. For anyone who has read any of the patterns books out there (e.g., Erich Gamma, John V., etc.), this will seem like an epiphany. You'll go, "Of course! Why didn't I think of that?!"
From here, we move on to database design. This is the best hands-on, practical guide to database design that I've ever seen. Henderson distills, in one chapter, all that you need to know to build complex business models, entity-relationship diagrams, and relational data models. What I like most about this is that Henderson doesn't start with physical modeling. He starts with the business processes the app that will use the database must encompass, then shows how to extrapolate business process flow charts, E-R diagrams, logical data models, and, finally physical data models. You start with nothing but an application concept and end up with a fully-functional SQL Server database. If you ever wanted to learn database modeling and design from the ground-up, this is your chance.
Next, is the objects section. Here, individual chapters cover Views (normal, partitioned and indexed), UDFs (lots of great code here including how to create your own system and vector functions -- e.g., MEDIAN()), triggers (normal, instead of, auditing), and error handling. Transact-SQL error handling is an oft-misunderstood area of the language. Henderson shines a light on it and shares what the masters know.
The SQLXML section is the second crown jewel of the book. When I saw that Henderson was covering SQLXML in his new book, I guess I should have guessed he would cut no corners, but, honestly, this section by itself is better than every other SQLXML book I've read. That's right - this one section of the book is better than other whole books dedicated to the subject. The introduction to XML is as good a synopsis of the language as you will find. The chapters covering the individual SQLXML features are also better than I've seen elsewhere. In true Henderson tradition, they are readable, in-depth, and thorougly engaging.
The advanced section is exactly that: advanced. Want to learn about how SQL Server interfaces with COM? Look no further -- the chapter even includes a nice, concise introduction to COM itself for those new to it. Want to learn to build extended procs? Look no further. This chapter alone is worth the whole cost of the book. I guess I shouldn't be surprised by now, but it's as in-depth as they come. I'm not even a C++ coder, but I worked through the examples and successfully built my first extended proc.
And I have to commend Henderson on the performance chapter. It's the best I've seen on the subject. It's far clearer and in-depth than what you find in Inside SQL Server 2000, for example.
The arrays chapter is the third crown jewel of the book. The technique of using extended procs and UDFs to add array support to the T-SQL language is ingenius. I'll bet Henderson could sell this code commercially if he wanted.
And the final crown jewel is the set of essays at the end of the book. What clear, lucid, lively, enjoyable prose. Henderson is one of the great technical writers of our generation. He spreads his wings a bit in these chapters and shows just what a great wordsmith he really is. Regardless of whether you're talking technical or nontechnical books, fiction or nonfiction, you will not find better writing than this. I think he should consider branching out into other kinds of writing because he obviously has the ability.
In sum: this book elevates Transact-SQL to the plateau of "real" languages such as Java, Pascal, and C++. It is the first "thinker's" coding book I've seen for Transact-SQL stored procedure development and among the best programming books I've ever read. It is a worthy successor to "The Guru's Guide to Transact-SQL."