Sql server 2008 如何构建只包含昨天的增量的数据库

Sql server 2008 如何构建只包含昨天的增量的数据库,sql-server-2008,Sql Server 2008,我需要知道昨晚以来我的数据库发生了什么变化。 是否可以从LDF文件中提取此数据并构建包含增量的新数据库 例如,假设我有一个用户表,现在添加了一个新用户,其中一个用户更新了他的家庭地址。我需要能够建立一个新的数据库,用户表将包含两个记录 1.新用户(并添加一个新列以了解它是新字段还是更新字段) 2.更新其记录的用户(最好知道哪个记录已更新) 顺便说一句, 我必须使用我可以使用的SQL Server(2008和2012) 提前感谢。我建议查看“更改数据捕获”功能: 此功能仅适用于SQL Server

我需要知道昨晚以来我的数据库发生了什么变化。 是否可以从LDF文件中提取此数据并构建包含增量的新数据库

例如,假设我有一个用户表,现在添加了一个新用户,其中一个用户更新了他的家庭地址。我需要能够建立一个新的数据库,用户表将包含两个记录 1.新用户(并添加一个新列以了解它是新字段还是更新字段) 2.更新其记录的用户(最好知道哪个记录已更新)

顺便说一句, 我必须使用我可以使用的SQL Server(2008和2012)

提前感谢。

我建议查看“更改数据捕获”功能:

此功能仅适用于SQL Server企业版。

或者尝试此用于SQL Server标准版的Codeplex项目:

插入、更新和删除时的触发器如何?您可以将此数据插入历史记录表或任何您想要调用的表中,并根据您的时间要求进行查询或查看。下面是一个示例(kt2008是db名称,chassis是我的实体名称):


虽然这是可能的,您能解释一下为什么需要这样做吗?
DROP TRIGGER IF EXISTS kt2008.chassis__ai;
DROP TRIGGER IF EXISTS kt2008.chassis__au;
DROP TRIGGER IF EXISTS kt2008.chassis__bd;

CREATE TRIGGER kt2008.chassis__ai AFTER INSERT ON kt2008.chassis FOR EACH ROW
INSERT INTO kt2008.chassis_history SELECT 'insert', NULL, NOW(), d.* 
FROM kt2008.chassis AS d WHERE d.id = NEW.id;

CREATE TRIGGER kt2008.chassis__au AFTER UPDATE ON kt2008.chassis FOR EACH ROW
INSERT INTO kt2008.chassis_history SELECT 'update', NULL, NOW(), d.*
FROM kt2008.chassis AS d WHERE d.id = NEW.id;

CREATE TRIGGER kt2008.chassis__bd BEFORE DELETE ON kt2008.chassis FOR EACH ROW
INSERT INTO kt2008.chassis_history SELECT 'delete', NULL, NOW(), d.* 
FROM kt2008.chassis AS d WHERE d.id = OLD.id;