是否可以找到将行插入SQL Server 2005中的表的日期+时间?
SQL Server是否记录插入命令?
答案 0 :(得分:3)
每当我创建一个表时,我总是包含以下两列:
CreatedBy varchar(255) default system_name,
CreatedAt datetime default getdate()
虽然这会占用额外的空间,但我发现随着时间的推移,这些信息非常有用。
您的问题是关于日志。答案是肯定的。但是,您是否可以获取信息取决于您的恢复模式。如果简单,则记录将被覆盖以用于下一个事务。如果是批量或完整,则信息在日志中,至少自上次增量备份以来。
答案 1 :(得分:2)
只要您使用cdc创建的函数来提取实际数据记录,就可以派生插入日期。
例如,如果您要提取类似的内容:
DECLARE @from_lsn binary(10), @to_lsn binary(10);
SET @from_lsn=sys.fn_cdc_get_min_lsn ( 'name_of_your_cdc_instance_on_cdc_table' );
SET @to_lsn=sys.fn_cdc_get_max_lsn();
SELECT * FROM
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table
(
@from_lsn,
@to_lsn,
N'all'
);
您可以使用cdc内置函数sys.fn_cdc_map_lsn_to_time
将日志序列号转换为日期时间。以下用例:
SELECT sys.fn_cdc_map_lsn_to_time(__$start_lsn),* FROM
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table
(
@from_lsn,
@to_lsn,
N'all'
);
答案 2 :(得分:1)
你可以在表上有一个InsertDate默认的getdate()列,这是最简单的方法。
在SQl Server 2008上,您可以使用CDC来控制表格中已更改的数据
更改数据捕获记录插入,更新和删除活动 应用于SQL Server表。这使得细节 以易于使用的关系格式提供的更改。柱 信息和应用更改所需的元数据 为修改的行捕获目标环境并存储在其中 更改镜像跟踪源的列结构的表 表。提供表值函数以允许系统访问 对消费者的变化数据。