So much became possible with SQL Server 2005, and we are still getting to grips with its features. I love warning my colleagues to study all those features and think about their significance before getting distracted too much by the new stuff. Why, I hear you ask, when we are getting SQL Server 2016 with all those new cool additions such as row-level security? Well. That’s a good example: Row-level and cell-level security has been available since SQL Server 2005. What I mean is that this version made all the changes that were necessary to make it happen. The way forward with both types of security was explained at that time in Art Rask’s famous white paper Implementing Row- and Cell-Level Security in Classified Databases, and the technique has been used since then in some large databases, and recommended by Microsoft Consulting Services for Microsoft customers and partners. What has been added now in SQL Server 2016 is a shrink-wrapped, and much simpler, version of the technique that is likely to be easier to implement but less versatile.
I agree that it is a good idea to provide ‘shrink-wrapped’ features such as row-level security, audit and dynamic data masking. It makes less experienced SQL developers aware of what is possible, and introduces them to the benefits of having such things in place in your database. However, it introduces the myth that the functionality is impossible to implement without these features in the product. Nope: wrong. I’ve done all three myself in previous versions since 2005 and seen others implement them.
There are several features that got into SQL Server 2005 that are as neglected as the ones that made row-level and cell-level security possible, such as synonyms, schemas and service broker. I agree that the features that have been introduced since then, such as Window functions, make life a lot easier for the SQL Programmer, and we should be appreciative. My point is rather different: Just because something dates back ten years doesn’t mean that it is any less capable of surprising you with its capacity for solving an implementation headache.