插入一个行表的日期(Date of inserting a row into table )

2019-09-17 16:10发布

是否有可能发现当行插入SQL Server 2005中的表日期+时间?

请问SQL Server日志INSERT命令?

Answer 1:

每当我创建一个表,我送花儿给人包括以下两列:

CreatedBy varchar(255) default system_name,
CreatedAt datetime default getdate()

虽然这种使用一些额外的空间,我发现的信息证明非常,随着时间的推移非常有用的。

你的问题是有关日志。 答案是“是”。 但是,你是否能得到的信息取决于你的恢复模式。 如果简单的,然后记录被改写为下一次交易。 如果散装或已满,则信息是在日志中,自上次增量备份至少。



Answer 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到日志序列号转换成datetime。 下面用例:

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'
);


Answer 3:

你可以对你的表InsertDate默认GETDATE()列,这将是最简单的方法。

在SQL Server 2008中您可以使用CDC来控制你的桌子上改变的数据

变更数据捕获记录插入,更新和删除应用到SQL Server表的活动。 这使得细节的变化提供一个轻松消费关系格式。 列信息和被应用更改到目标环境所需的元数据被捕获的修改的行和存储在镜像所跟踪的源表的列结构变化的表。 提供表值函数,以允许消费者改变数据系统的访问。



文章来源: Date of inserting a row into table