Enter SQL Server 2008, assuming it's easy for you to upgrade to that latest release (and it probably is, if you are already on SQL Server 2005). Its new Change Data Capture (CDC) feature copies the data for the tables you specify. While designed to support ETL processes for efficient loading of data warehouses or marts, it can serve well in scenarios where much of the data changes must be captured and stored in separate tables. Here's a data flow diagram in data warehousing scenario:

Also, a Channel 9 webcast goes into technical details about setting up and using CDC, but this is what's in it for you:
- If you use CDC you can forget about writing and maintaining additional code just for compliance purpose.
- You stop worrying whether your additional database updates slow down the performance of core functions, as CDC tracks data asynchronously. (If you have doubts about performance check out this case study about Austrian sports broadcasters.)
- You don't have to prove to anyone that your compliance code does what it's supposed to, as you can point to the well-defined and published features of your database that you simply turn on.
- You can reliably access captured data in a relational format. Already there are tools that help you manage the data from CDC: http://www.codeplex.com/CDCHelper.
On the other hand, you may not need to save detailed history of all updates to your data. Perhaps you only need to know that data in certain columns changed or track the user making the changes. Then consider Change Tracking or Auditing features of SQL Server 2008.







