¿Cómo implementar versiones históricas?

Estamos en las primeras etapas de la construcción de una gran aplicación C # MVC2 (también empleamos arquitectura Sharp y Nhibernate como parte del ecosistema) en SQL 2008 R2, y uno de los requisitos es que todas las versiones de filas de bases de datos sean accesibles durante un período determinado de historia.

Hemos jugado con la idea de un diseño similar a:

id (PK)
recordId
versionId

y que cada edición en un registro genere un nuevo registro creado con el mismo recordId y un versionId incrementado. La visualización del registro se haría con algo similar a SELECT ... WHERE recordId = X AND versionId = MAX (versionId)

Las instantáneas en cada transacción no funcionarían (¿demasiadas? Y no son accesibles desde la aplicación fácilmente).

Pero tenemos curiosidad por saber qué otras implementaciones se han probado con éxito o posibles problemas con nuestra propuesta.

Respuestas a la pregunta(6)

Su respuesta a la pregunta