示例:
如果在创建表后很多时候在表中添加了一列。 它的数据/时间信息存储在哪里?
答案 0 :(得分:0)
SQL Server无法跟踪表的特定更改。如果您需要或需要此级别的详细信息,则需要创建可以捕获某些特定事件甚至事件类的DDL触发器(在SQL Server 2005中引入),并将这些更改记录到您创建的历史记录表中。
DDL触发器是"""触发;没有"而不是"选项。但是,如果您想禁止某项操作,则只需发出ROLLBACK
即可取消所发生的操作。
DDL Triggers的MSDN页面有很多关于如何捕获特定事件(即ALTER TABLE
)和使用返回XML的EVENTDATA
函数以获取什么事件触发了触发器的细节,包括执行的确切SQL查询。事实上,Use the EVENTDATA Function的MSDN页面甚至有一个简单的示例,即创建一个DDL触发器来捕获ALTER TABLE
语句(在"
ALTER TABLE和ALTER DATABASE事件"部分)并创建一个DDL触发器以将事件捕获到日志表中(在"示例"部分中)。由于所有ALTER TABLE
命令都会触发此触发器,因此您需要解析哪些命令特定于您要查找的内容。而且,现在您可能知道这是一个选项,需要捕获的不仅仅是添加列(即删除列,更改数据类型和/或可空性等)。
答案 1 :(得分:0)
SQL Server仍然没有任何允许您在列级别查看创建/修改日期的系统视图。您必须查看表的modify_date列。
如果在您的情况下所做的更改是最近的更改,这可能对您有所帮助。但如果表格上有任何更改,它将开始反映最近更改的日期。
select name, modify_date from sys.objects where name=@table_name