DBMS:如何在SQL Server中获取列的创建日期

时间:2014-12-15 14:37:39

标签: sql-server

示例:

如果在创建表后很多时候在表中添加了一列。 它的数据/时间信息存储在哪里?

2 个答案:

答案 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