A new client of mine has a small VB/Access database application written in 2002 that he wants rewritten to bring it more up to date and to support new features he has been wanting for some time. So, I'm going to convert it over to use C#.NET 2008 and SQL Server Express 2008 on the local machine with the ability to scale to using WCF and SQL Server 2008 on a remote server.
One of the new features he is interested in is maintaining and reporting on complete history of data changes over a period of time. In the past, I've done this through the use of triggers and stored procedures, and it is a pain in the @!#$.
I have had an itch lately to mess with the Change Data Capture features of SQL Server 2008. During my initial hour of playing with it, I realized that it creates a job in SQL Agent that by default runs every 5 seconds. It also seems to be a bit more of a pain when I need to change the schema of captured tables. Other than that, it seems much easier to implement than my original method. So, these are my questions:
- Is this overkill for a small desktop application that might or might not eventually migrate over to a remote server?
- What should I expect in terms of performance? As his database size increases, am I going to get more calls from him saying that his computer is running slow?
- Are there any other gotchas with CDC that I should be aware of from anyone currently using it in production?
- Does anyone have any links to their favorite ways of tracking changes over time that might be a better fit for a small desktop application?
Thanks,
Marc