Datos de versionado en SQL Server para que el usuario pueda tomar un cierto corte de los datos

Tengo un requisito de que en un website respaldado por SQL Server, que es esencialmente una gran aplicación CRUD, el usuario debe ser capaz de 'retroceder en el time' y poder exportar los datos tal como estaban en un momento dado.

Mi pregunta es ¿cuál es la mejor estrategia para este problema? ¿Existe un enfoque sistemático que pueda tomar y aplicarlo en todas las tablas?

Dependiendo de lo que necesita exactamente, esto puede ser relativamente fácil o infernal.

Fácil: Cree una tabla de historial para cada tabla, copie los datos allí preactualizados o publique la inserción / actualización (es decir, también hay novedades). Nunca eliminar de la tabla original, hacer eliminaciones lógicas.

Difícil: hay una versión fdb que count cada cambio, cada elemento de datos está correlacionado con el inicio y el final. Esto requiere una manipulación de key primaria muy elegante.

Solo agrega un pequeño comentario a las respuestas anteriores. Si necesita volver para todos los usuarios, puede usar instantáneas .

La solución más simple es save una copy de cada fila cada vez que cambie. Esto se puede hacer más fácilmente con un disparador. Entonces su UI debe proporcionar capacidades de búsqueda para regresar y encontrar los datos.

Esto produce una explosión de datos, que empeora cuando las tablas se actualizan con frecuencia, por lo que el siguiente paso suele ser algún tipo de debugging basada en datos de datos anteriores.

Una implementación que podría ver es Team Foundation Server . Tiene la capacidad de realizar consultas históricas (utilizando la palabra key WIQL ASOF). El back-end es SQL Server, por lo que podría haber algunas pistas allí.