1

我有 SQL Server 2014,标准版。我们有几个表,我们从中删除数据,然后将其重新插入到不同的主键下(以合并我们系统中实际上相同的两个人的记录)。所有这些更改都是通过 T-SQL 事务执行的。

我了解事务和回滚是如何工作的,但我需要更多的是审计/回滚,因为我的用户可能只需要在以后回滚这个事务(而不是恢复整个数据库或表)。“更改数据捕获”不是一个选项,因为我只有标准版。

我真正的问题在于如何存储这些审计信息。我想我需要一个唯一的密钥来跟踪这是一个工作单元,因此就用户而言,所有这些表更改都与同一组相关联。但是,例如,如果我有一个 DELETE WHERE ID = @ID 查询,我如何在删除之前存储所有这些已删除的记录,以便以后可以在需要时重新插入它们?我什至可以存储某种大型回滚 T-SQL 脚本,但我只是不确定如何生成可以存储并稍后运行以用于我将要删除的数据的 INSERT 脚本。

我对任何想法持开放态度,我只需要一个足够通用的架构来处理多个表以及回滚删除和插入的能力。我更关心回滚能力而不是保持漂亮的审计表。

4

1 回答 1

0

您不能开箱即用,因为即使使用完整日志记录,您也可以将整个数据库回滚到某个时间点,但不能回滚特定事务。

您将不得不为取消交易编写一些代码,但我相信简单的审计触发器将为您提供实现它所需的数据。这是一篇很好的文章,可以帮助您入门。

https://www.mssqltips.com/sqlservertip/4055/create-a-simple-sql-server-trigger-to-build-an-audit-trail/

于 2016-05-17T17:12:10.337 回答