Here’s what I’ve been reading lately on the SQL Server front. I’d like to thank all three authors and publishers for providing these books for review.
Denny’s a jack of all trades, and a Microsoft Certified Master of SQL Server to boot. I’ve had the pleasure of knowing Denny for a few years, and he’s on the short list of people who I’d trust with my server password list. (I wouldn’t trust him with my laptop password, though, because he’s got a wicked sense of humor.) When Denny first told me he was writing a security book by himself, I asked him why – it seemed like such a dry topic. Amazingly, Denny was able to bring this material to life in a friendly, readable way.
It’s easy to recommend this book for companies that store financial, medical, or personally identifiable data in their databases, but going beyond that, I think every company with a multi-DBA team should have a copy of this book on their bookshelf. A lot of my clients ask questions that are answered well in this book, and this book is way cheaper than a HIPAA/PCI/SOX audit.
If you’re a solo DBA at a shop, I probably wouldn’t recommend this book, though. The topics covered in this book take time to implement, and they’re usually beyond the scope of what a single person has the time to do when they’re firefighting. Yes, I wish all our databases were secure, but solo DBAs probably need to start with more basic security concepts such as how to configure service accounts, and that’s not covered here. This focuses on senior DBA level knowledge.
Troubleshooting SQL Server by Jonathan Kehayias and Ted Kreuger
Jonathan and Ted are forum monsters: they’re constantly patrolling user questions looking for ways they can help. As a result, they’re well-versed in the typical problems DBAs face and the best ways to solve those problems. They’ve compiled the results into a book. The book reads like a very polished forum answer: if you’ve got a CPU problem, turn to Chapter 3. You’ll learn what tools to use to diagnose the issue, the most common problems, and the best solutions.
Jonathan was one of the coauthors on Professional SQL Server 2008 Internals and Troubleshooting (Paperback – Kindle), and at first glance, it might sound like those two books are similar. This book is different because it takes a problem-and-solution approach, whereas our Pro 2008 Internals teaches the reader about internals first, then explains troubleshooting tools you can use to look under the hood. I’d say that Troubleshooting SQL Server is a faster approach to getting ‘er done, and I’m adding it to my list of recommended books for SQL Server DBAs.
Lemme just start out by saying that I don’t like posting negative reviews. I first received a review copy of this, marked it up, and emailed the publisher and author with a list of questions. Despite a long dialog, I never got answers to the technical issues, so I tossed the book in the closet. I wouldn’t have posted this review, but I noticed a disturbing number of five-star reviews for the book on Amazon. It wouldn’t be fair for me to let people spend their money on this, because by buying it and following the advice, they’re hurting their SQL Servers.
Here’s a few examples of the advice:
- P335 – in a section on designing maintenance tasks in a mission-critical environment, the reader is instructed to check maintenance plans for reorganize indexes, rebuild indexes, and update statistics. This is the worst approach possible for a mission-critical environment: it will do all three tasks against every index in the database, every time. If we absolutely had to use this approach, we could accomplish the same thing by simply rebuilding all indexes, but again, even that is a bad idea in a mission-critical environment. It even tells the reader to create separate schedules, but doesn’t say how or when these tasks should run.
- P361 – “Place transaction logs on RAID5 rather than RAID1+0 for sequential workloads.” Not true, as Microsoft documented in Table1A of this doc.
- P360 – in a section on building a scalable server: “…edition-wise it must be either DataCenter or Enterprise edition to host production data.” What, Standard isn’t good enough for production?
- P70 – in the wait stats troubleshooting query, useless wait stats aren’t filtered out. The example screenshot shows that the server is bottlenecked by SQLTRACE_INCREMENTAL_FLUSH_SLEEP, XE_TIMER_EVENT, and FT_IFTS_SCHEDULER_IDLE_WAIT, none of which are wait events that a DBA should spend time investigating. Contrast this with the well-thought-out, production-tested queries in Troubleshooting SQL Server, and it’s pretty disappointing.
- P360 – “Configure the storage and memory L2 cache per CPU has a minimum of 2 MB to improve memory.” There are so many grammatical and technical errors here I don’t even know where to begin.
To top it all off, many of the book’s sample queries simply don’t work – keywords are mashed together with no spacing, like page 69’s “SELECTTOP” and “CROSSAPPLYsys”. Ouch.
Needless to say, I don’t recommend adding this book to your collection, but if you’re itching for holiday reading, check out my recommended SQL Server book list.