Every time I need to design a new database I spend quite some time
thinking on how I should set up the database schema to keep an audit log of
the changes.
If you are using SQL Server 2008, you probably should consider Change Data Capture. This is new for 2008 and could save you a considerable amount of work.