SQL Server - VIEWS - 跟踪上次更改时间和更改时间的用户

Posted

技术标签:

【中文标题】SQL Server - VIEWS - 跟踪上次更改时间和更改时间的用户【英文标题】:SQL Server - VIEWS - keep track of last altered time and the user that altered it 【发布时间】:2019-05-21 13:59:10 【问题描述】:

我想创建一个自定义表,我应该在其中存储 VIEW 的最后更改日期和更改它的 SYSTEM_USER

VIEW 的最后更新日期我可以使用这个查询来检索它:

SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'v'
ORDER BY 3 DESC

但是,上表没有保留有关更改视图的用户的信息。

有没有办法在 SQL 中做到这一点? INSTEAD OF triggers 不是解决方案。

【问题讨论】:

我的第一个建议是使用版本控制来管理您的数据库,然后您可以看到的不仅仅是谁更改了视图以及何时更改了视图。您可以看到更改是什么,并假设他们正确使用了该软件,为什么进行更改,它是什么功能的一部分等。如果这不可能,Aaron Betrand 在this article 中描述了一个使用数据库触发器的非常好的解决方案,虽然不确定这是否是您所说的“INSTEAD OF 触发器不是解决方案” Bad habits to kick : ORDER BY ordinal @GarethD - 因为INSTEAD OF 可以与UPDATEINSERT 等一起使用,并且没有人会对此视图进行更新或插入。 您不会看到 INSTEAD OF 触发器,因为它们与 DML 触发器有关。如果您需要存储此类信息,它将位于 DDL 触发器中。 【参考方案1】:

企业版提供对象审计。

更便宜的选择 - 我认为有一些第三方产品也可以做到这一点。

上述内容不足,我不相信有办法。对不起。

【讨论】:

以上是关于SQL Server - VIEWS - 跟踪上次更改时间和更改时间的用户的主要内容,如果未能解决你的问题,请参考以下文章

如何创建跟踪 (SQL Server Profiler)

从 SQL Server CE 获取上次复制日期/时间

如何在 SQL Server 中查找上次执行的查询

sqlserver 怎么看存储过程的上次执行时间

从 SQL Server 2008 数据库获取上次登录时间

如何跟踪应用程序上次处理的数据库记录/行?