INTRODUCTION
OUT OF EVERY ENDING COMES the beginning of something new. This title has been Rob Vieira’s for many years, and now he’s wrapping up that chapter of his life while I begin a new chapter of my own — and the first chapter of this text. Likewise, you, as a reader, are also entering something of a transition; you know something about programming, probably, but you’re about to begin a completely new experience as a programmer of relational databases in general and Microsoft SQL Server 2012 in particular.
Database programming is a pretty big shift from most other kinds of software engineering. If you’re at all like me, something brought you from your early programming experience (6502-based machines in BASIC for me) to databases. For me it happened at Microsoft in the early ‘90s, supporting a beta product that flew under the radar; I was asked to track certain aspects of the work I was doing in Access (2.0 at that time). Once I learned to do that, I was hooked, and a couple years on the Access support queue (learning SQL Server 4.2 and beyond as well) sealed the deal.
Working with SQL Server is a whole different animal from ordinary procedural programming. You get to think in mathematical and set-based terms, and learn how to ask carefully for what you want without spelling out how to actually accomplish the work. Transitioning from procedural programming to this kind of thinking without help is like trying to make a paradigm shift without a clutch. And yet this language, ...