Un colega mío dice que SQL Server guarda la fecha y hora de la última modificación en una "columna oculta" en cada registro. Estoy bastante seguro de que dijo algo mal. ¿Me puedes confirmar esto?Fecha de la fila SQL Server modificada por última vez
Respuesta
Como los otros insinúan, su colega debe estar hablando de un galimatías o refiriéndose a otra cosa. La estructura en disco para un registro, o página por 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.
Agradezco la respuesta de Damien_The_Unbeliever (y le doy un +1) y de Mark S. Rasmussen. Solo elige la respuesta de Marca porque es lo primero. ¡Gracias! –
De Pinal Dave, hay un DMV que puede utilizar para obtener esta información. Es posible que su colega se esté refiriendo al TIMESTAMP
para una fila modificada, pero hasta donde sé, solo mantiene que si lo solicita al agregar 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');
Entonces me confirma que no hay un "campo oculto en cada registro" –
@Bugeo - No, no * por fila *. Hay 'TIMESTAMP' o' ROWVERSION', pero debes implementarlo tú mismo. Eso registrará una identificación única para la actualización particular hecha a la fila. Aparte de eso, SQL Server solo mantiene una fecha y hora * por tabla * por última vez que se tocó. – Yuck
No es confiable. El primer enlace invalida su uso prácticamente. El segundo tiene algo mejor, tal vez http://sqlblogcasts.com/blogs/grumpyolddba/archive/2010/08/16/sys-dm-db-index-usage-stats-does-it-tell-the-truth.aspx y http://stackoverflow.com/questions/4345603/how-to-find-out-which-tables-are-most-accessed-or-frequently-used-in-sql-server/4345713#4345713 – gbn
Si quieres saber cuando una fila específica se actualizó por última vez, se debe mantener una columna de marca de tiempo "LastUpdated" en la tabla y actualizar que tras cada actualización (por ejemplo automáticamente a través del gatillo)
(Aunque es una publicación anterior): tiendo a incluir mis actualizaciones de marca de tiempo como parte de mis declaraciones preparadas (procedimientos almacenados). – Paul
Hay ninguna columna oculta, mantenida por fila, que contiene la fecha/hora de la última modificación. Tampoco hay una columna que contenga la identidad del usuario que realizó dicho cambio, ni hay una columna que identifique cuál fue el último cambio realizado (insertar o actualizar).
Si desea alguna de estas características, debe implementarlas. Para algunos usuarios, hasta el último bit de sobrecarga podría importarles, por lo que no sería aceptable tener funciones ocultas (con costos ocultos).
Me gusta especialmente el punto sobre las características ocultas == costo oculto. Este es un concepto que aún no he podido explicar a mis colegas. –
Cuándo se actualizó por última vez un registro, y quién lo actualizó se puede mantener agregando una última columna actualizada con un valor predeterminado de GetDate(). El último nombre de usuario de actualización es complicado, ya que es muy probable que su aplicación esté utilizando una conexión de base de datos común. El nombre de usuario se puede completar agregándolo como una personalización para todos los procedimientos de inserción y actualización y pasando las credenciales de AD, SSO o de 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 debe incluirse como una opción de conjunto para la base de datos o al menos la tabla. ¿Por qué? Intente obtener esta información sin ella, después de haber ingresado el hecho (sugerencia, si tiene un campo de identidad, "puede" ayudar, pero podría no ser confiable).
Eso registrará la fecha/hora en que se creó el registro, no cuando se modificó – DaveBoltman
- 1. ¿SQLite almacena la última fecha modificada de una fila?
- 2. ¿Cómo ordenar archivos por última vez modificada en ruby?
- 3. Cómo leer la última fila con SQL Server
- 4. ¿Cómo obtener la última inserción/actualización/eliminación de fecha y hora en Sql Server 2005?
- 5. SQL Server 2000: ¿Hay alguna forma de saber cuándo se modificó por última vez un registro?
- 6. La última vez que se ejecutó un procedimiento almacenado
- 7. ¿Cómo puedo obtener el ID de la última fila INSERTed usando PDO con SQL Server?
- 8. Seleccione Inicio y la última fila de una tabla (SQL Server)
- 9. Fecha SQL Server vs smalldatetime
- 10. Android check cuando la tabla se actualizó por última vez
- 11. Lista de archivos por la última fecha editada
- 12. Desplazamiento de fila en SQL Server
- 13. PHP while loop encontrar la última fila
- 14. jquery elemento centrado por última vez
- 15. restricción de fila única en SQL Server
- 16. Suma de la fila n hasta la última fila
- 17. AutoCompleteTextView recorta la última fila
- 18. DatagridView Seleccionar la última fila
- 19. SQL Server Tamaño máximo de fila
- 20. Devolviendo la 'última' fila de cada 'grupo por' en MySQL
- 21. System.Data.Linq.ChangeConflictException: Fila no encontrada o modificada
- 22. Fecha de última ejecución en un procedimiento almacenado en SQL Server
- 23. SQL Server y C#: obtener la última identificación insertada
- 24. Comprobar cuándo se modificó por última vez la contraseña
- 25. SQL Server 2005 Fecha Marca de fecha y hora Consulta
- 26. ¿Es posible obtener al usuario que editó por última vez un proceso, función, tabla o vista almacenados en SQL Server?
- 27. ¿Simula la fecha actual en una instancia de SQL Server?
- 28. SQL Server: fecha máxima y unión interna
- 29. Página de SQL Server 2008/Pensamientos de Compresión de fila
- 30. Cómo ALTERAR varias columnas a la vez en SQL Server
Es posible que su colega confunda con SCN_TO_TIMESTAMP de Oracle, que es una fecha aproximada de compromiso de los datos. – Dom