如何检查SQL Server中的表的更新时间

时间:2016-12-22 11:02:46

标签: sql-server

我在SQL Server中有一个表(表名 - > city)

我想检查表(城市)的更新时间,我需要修改昨天的时间(即表格更新的确切时间,如果表格(城市)更新为2:下午00点,下午3点,下午5点半等,然后我想要所有的数据,而不仅仅是它的最后修改时间。

我使用了下面的SQL查询,但它给了我空白的结果: -

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('city')

2 个答案:

答案 0 :(得分:0)

我不知道它对你有多大帮助。

CONVERT(char(10), isnull(eventtime,getdate()), 108) as EventTime

另一种方式

SELECT    [TableName] = name,
create_date,
modify_date
FROM    sys.tables
WHERE    name = 'your_Table_Name'

N.B:请参阅Source Site了解更多信息。

答案 1 :(得分:0)

除非您启用了审核,否则无法按照您的要求执行操作(获取所有数据,而不仅仅是最后一个数据)

我可以想到的几个选项..

1.Query Tlog:
在数据库备份而不是当前数据库上运行它,因为这是非常耗费资源的。

select operation,allocunitname,[begin time],[transaction name]
 from
fn_dblog(null,null)
where [transaction id] in
(
select  [transaction id]
from
fn_dblog(null,null) where operation='LOP_MODIFY_ROW' and 
allocunitname not like 'sys.%' and allocunitname not like '%unknown%' 
)

输出

operation      allocunitname    begin time              transaction name
LOP_BEGIN_XACT  NULL           2016/12/22 16:37:23:107  FirstPage Alloc
LOP_MODIFY_ROW  dbo.t1          NULL                    NULL
LOP_MODIFY_ROW  dbo.t1           NULL                   NULL
LOP_COMMIT_XACT NULL              NULL                   NULL
LOP_BEGIN_XACT  NULL          2016/12/22 16:37:33:860   UPDATE
LOP_MODIFY_ROW  dbo.t1             NULL                 NULL
LOP_COMMIT_XACT NULL               NULL                 NULL

选项2:
1.Enable Audit如果你想要所有表...如果这是一个表,请使用历史表

选项3:
如果在SQL2016上,您可以使用Temporal表