Trade in your item
Get a £2.72
Gift Card.
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Defensive Database Programming with SQL Server Paperback – 31 May 2010

See all 2 formats and editions Hide other formats and editions
Amazon Price New from Used from
"Please retry"

Trade In this Item for up to £2.72
Trade in Defensive Database Programming with SQL Server for an Amazon Gift Card of up to £2.72, which you can then spend on millions of items across the site. Trade-in values may vary (terms apply). Learn more

Product details

  • Paperback: 394 pages
  • Publisher: Red gate books (31 May 2010)
  • Language: English
  • ISBN-10: 1906434492
  • ISBN-13: 978-1906434496
  • Product Dimensions: 15.6 x 2.1 x 23.4 cm
  • Average Customer Review: 4.0 out of 5 stars  See all reviews (2 customer reviews)
  • Amazon Bestsellers Rank: 1,377,897 in Books (See Top 100 in Books)

More About the Author

Discover books, learn about writers, and more.

Product Description

About the Author

Alex Kuznetsov has been working with object oriented languages and databases for more than a decade. He has worked with Sybase, SQL Server, Oracle and DB2. He regularly blogs on, mostly about database unit testing, defensive programming, and query optimization. Alex has written multiple articles on and, and contributed a chapter to "MVP Deep Dives" book. Currently he works with DRW Trading Group in Chicago, where he leads a team of developers, practicing agile development, defensive programming, and database unit testing every day. In his leisure time Alex prepares for and runs ultramarathons. --This text refers to an out of print or unavailable edition of this title.

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

4.0 out of 5 stars
5 star
4 star
3 star
2 star
1 star
See both customer reviews
Share your thoughts with other customers

Most Helpful Customer Reviews

1 of 1 people found the following review helpful By Amazon Customer on 2 Sep 2010
Format: Paperback
This is a very good book that is based on practical experience. Reading it would save you trying days of coding and testing. I am very pleased to have read it and advise any sql coder to go through it.

It is very specific to sql server, rather than generic theory that may or may not apply to your installation.

Covers so many good ideas that will take years to understand and learn. some of which I am generally aware of but have not understood in details. Such as the behaviour of set and select.

Attempt to solve the problem with code reuse which is an almost impossible problem. SQL code is routinely duplicated to maintain a good performance (e.g. scalar functions aren't used - i've coded them in then out when things slowed down), so here there are some practical suggestions that should help the disillusioned.

I don't think i can fault it in any of the examples apart from a couple of typos it is very well written, at times there seem to be pages and pages of code with slightly different versions, but I guess that gives a very clear and step by step examples to prove solid points.

OK, I am not sure about de-normalising for sake of enforcing business logic in constraints, I am not sure if i can get this passed the architecture team (they will want to keep business rules in the application layer - despite the arguments in the book to the contrary), still I am really impressed with the creative approach (don't know if anyone else thought of doing this before), and will try to apply - but only if I can see the benefits outweigh the data duplication and the additional code complexity and its a big ask...
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
Format: Paperback Verified Purchase
Defensive programming is not a new idea but has been around for 30+ years. This book applies the tenets of it to database programming to produce more robust code that is safe to run in unexpected situations.

The subject of this book is to some degree also covered in other books on SQL development, where authors usually recommend to avoid 'risky' practices that might unexpectedly break one day, e.g., after an update of server software. However, it's usually not covered at depth because it's a rather special subject that will mainly appeal to expert developers who have already mastered all the basics of SQL and database programming.

The book focuses on a special, advanced subject, and therefore it is most useful for experienced SQL developers. In it the author looks into a number of typical pitfalls that most SQL programmers will experience the hard way one day in their careers. He offers valuable, practical advice how to avoid these pitfalls before they hurt. The text is well-written and clearly the author knows the subject very well and has significant experience in the field. Some of the practices highlighted in this book and discouraged as 'potentially risky' by the author are of the type that a 'good' programmer will not do anyway. As I myself know only too well often this is more inspired by gut-feeling than really solid knowledge, experience or systematic experimentation.

This book fills the gap between gut-feeling and knowledge in selected areas of SQL development by pointing out why the gut-feeling is indeed justified, why and in what way the practices are potentially problematic, what their impact may be if things go wrong, and how the risk can be avoided and at what price.

In my view the book will be a valuable read for most experienced SQL developers.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again

Most Helpful Customer Reviews on (beta) 5 reviews
6 of 6 people found the following review helpful
Useful and Informative.... 16 Jun 2010
By H. Treftz - Published on
Format: Paperback
I have worked with SQL Server as a developer and a programmer for over 15 years so I have read a lot of books about the product and T-SQL. This is one of the most informative books I have read on SQL in a long time because it made me think a little differently when looking at code. It presented me with situations I haven't seen before (for example a connection setting it's own rowcount explicitly) and the implications that could have.

It really makes you think about the what-if, what happens if your caller does something unexpected and what you might do to mitigate this risk. There are not a whole lot of SQL Server programming books that I learn something from anymore, this was one of them.
2 of 2 people found the following review helpful
Great reading for database practitioners 28 Jan 2011
By Plamen Ratchev - Published on
Format: Paperback
This is excellent work on a very important topic. Defensive programming is very often misunderstood, especially in the database world.

Alex deals with this "inconvenient" topic using very practical approach. Instead of filling pages with theory and reasons why defensive programming is good, he dives right into simple examples from the daily work of every database professional. We have all seen (and ignored) many of these issues, but demonstrating how this affects our code and how simple it is to avoid these problems makes this book shine. It is not a complete catalog of defensive techniques, rather a good collection of examples to illustrate the need for defensive coding and applicable methods. It builds the mindset to think proactively and create robust solutions.

The book includes coverage of the following topics: basic defensive technique, code vulnerabilities, changes to database objects, upgrades, reusing code, data integrity and constraints, error handling, concurrency.

"Defensive Database Programming with SQL Server" should be required reading for all SQL practitioners.
1 of 1 people found the following review helpful
When TRY ... CATCH is not enough. 21 Oct 2010
By Alejandro Mesa - Published on
Format: Paperback Verified Purchase
I really enjoyed reading "Defensive Database Programming with SQL Server", and I would recommend it to any SQL Server developer. My favorite chapter was "Chapter 7: "Advanced Use of Constraints", where the author demonstrates the power of the declarative part of the model.

This is not a book for beginners that want to learn about T-SQL language, but if you are already familiar with the language then you will learn about best practices for making your program more robust.

Walk with the author through those situations that can make your code to break. Being aware of these situations is a good start, learning how to defend your code from them is what this book is all about.
1 of 1 people found the following review helpful
Excellent book 13 April 2011
By Rand E. Gerald - Published on
Format: Paperback Verified Purchase
I was at a presentation by the author about this subject last year (March 2010) even before the book was published. Unfortunately, the book was not published until several months later. If I recall correctly, I ordered it on a pre-release basis. I have not been disappointed.

If you go through the book you will very likely find reference to oversights that you may have made in the past and how to avoid them in the future.

The only negative I can say about the book is that I wish that it had more of the author's helpful hints. A good subject, perhaps, for a Volume 2.

By the way - where did the author get that beautiful cover photo? Where was it taken?
Defensive SQL Server programming 'gotchas' 14 Nov 2010
By JRGWV - Published on
Format: Paperback
This is a great book to read for all levels, as it exposes techniques to test and defend against common mistakes and vulnerabilities that TSQL lends itself too. The book provides lots of example code that you can walk through to get the hands-on experience, to prove to yourself how the code works. The book also offers some brevity, so that you can quickly move through the chapters. One of the parts I enjoyed was the explanation of triggers, constraints and when different situations call for using them. Another chapter of interest was the Defensive Error Handling, which shows some of the limitations of the Try Catch error handling in SQL Server 2005 and 2008. Overall, I found this book to be very helpful and I will begin using some of the takeaways I found immediately.
Were these reviews helpful? Let us know