studio online management gratuita español documentacion books sql sql-server

online - Fecha de la última fila del servidor SQL modificada



sql server management studio (5)

¿Cuándo se actualizó por última vez un registro y quién lo actualizó puede mantenerse agregando una columna last_updated con un valor predeterminado de GetDate ()? La última actualización del nombre de usuario es complicada, ya que es muy probable que su aplicación utilice una conexión de base de datos común. El nombre de usuario se puede completar agregándolo como una personalización de todos los procedimientos de inserción y actualización y pasando las credenciales de inicio de sesión, inicio de sesión o inicio de sesión, lo que tenga sentido para su método de autenticación.

La última columna de actualización es tan útil y necesaria que debería incluirse como una opción establecida para la base de datos o al menos la tabla. ¿Por qué? Intente obtener esta información sin ella, después de que se haya ingresado el hecho (sugerencia, si tiene un campo de identidad, "puede" ayudar, pero podría ser poco confiable).

Un colega mío dice que SQL Server guarda la fecha y la hora de la última modificación en una "columna oculta" en cada registro. Estoy bastante seguro de que dijo algo mal. ¿Puedes confirmarme esto?


Como los otros están insinuando, su colega debe estar hablando en broma, o refiriéndose a otra cosa. La estructura en disco para un registro, o una página para ese motivo, no contiene ninguna referencia a la hora de la última actualización. Si bien puede encontrar información sobre la última actualización en el nivel de objeto, dicha información no está disponible en el nivel de registro / fila.


No hay una columna oculta, mantenida por fila, que contenga la fecha / hora de la última modificación. Tampoco hay una columna que contenga la identidad del usuario que realizó dicho cambio, ni una columna que identifique cuál fue el último cambio realizado (insertar o actualizar).

Si quieres alguna de estas características, tienes que implementarlas. Para algunos usuarios, hasta el último poco de sobrecarga podría ser importante para ellos, por lo que no sería aceptable tener características ocultas (con costos ocultos).


Si desea saber cuándo se actualizó por última vez una fila específica, debe mantener una columna de marca de tiempo "Última actualización" en la tabla y actualizarla en cada ACTUALIZACIÓN (por ejemplo, automáticamente a través del disparador)


De Pinal Dave , hay un DMV que puede usar para obtener esta información. Su colega podría estar refiriéndose al TIMESTAMP para una fila modificada, pero por lo que sé, solo mantiene que si lo solicita agregando explícitamente una columna de ese tipo.

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,* FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID( ''AdventureWorks'') AND OBJECT_ID=OBJECT_ID(''test'');