我在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')
答案 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表