我是mssql服务器数据库的新手。我有一个用例,必须找出以下两件事:
最近1个小时在特定表中更新了多少条记录。
最近1个小时的更新记录的按列计数(该列的更新及其在特定表中的计数)。
mssql服务器数据库中是否存在任何元数据表,我可以在其中找到上述信息,或者可以使用其他替代方法来找到相同的信息?
答案 0 :(得分:0)
对于第一种情况,您的表需要具有数据类型为DATETIME
或TIMESTAMP
的UPDATE_DATE列。
SELECT count(*) FROM Table1 WHERE Update_Date >= DATEADD(HOUR, -1, GETDATE());
对于后一种情况,我建议您编写触发器以记录更改的列。您的日志表可以采用
的格式TableName, Column_Name, From, To
之后,您可以查询该表并生成报告。这也是一个好习惯,因为您将不会使用生产/资源密集型数据。
如果创建触发器对您有意义,请检查this link的COLUMNS_UPDATED
功能
答案 1 :(得分:0)
据我所知,没有用于此目的的元数据。 对于第一个要求,您可以创建一个新字段,例如
Last_Update DATETIME default GETDATE(),
并据此构建您最近一个小时的查询:
WHERE Last_Update >= DATEADD(h, -1, GETDATE()
第二项要求可以通过将触发器与表的组合来完成,在该表中存储以后要检查的结果。