我们有一个数据库hundreds的桌子。
有没有某种metaSQL Server 中的数据源,我可以以编程方式查询以获取名称最后更改表和行?
或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间, etc.?
就查明表最后一次修改的时间而言,有一种偷偷摸摸的方法可以访问此信息,但它不会告诉您哪一行被更改,只是何时更改。
SQL Server 维护索引使用统计信息,并记录索引上的最后一次查找/扫描/查找和更新。它还按用户/系统对此进行划分。
仅过滤用户表,任何插入/更新/删除都会导致索引上发生更新,并且 DMV 将使用此新信息进行更新。
select o.name,
max(u.last_user_seek) as LastSeek,
max(u.last_user_scan) as LastScan,
max(u.last_user_lookup) as LastLookup,
max(u.last_user_update) as LastUpdate
from sys.dm_db_index_usage_stats u
inner join sys.objects o on o.object_id = u.object_id
where o.type = 'U' and o.type_desc = 'USER_TABLE'
group by o.name
然而,这并不理想,堆一开始就没有索引——而且我从未考虑过将它用于生产代码作为跟踪机制,仅作为取证工具来检查明显的更改。
如果您想要正确的行级别更改跟踪,您必须内置它,或者查看 SQL 2008 特定的更改数据捕获功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)