SQL 服务器 - 仅在以后回滚特定事务
SQL Server - Rolling back particular transaction only at a later date
我有 SQL Server 2014,标准版。我们有几个 tables,我们从中删除数据,然后将其重新插入到不同的主键下(合并我们系统中实际上相同的两个人的记录)。所有这些更改都是通过 T-SQL 事务执行的。
我了解事务和回滚是如何工作的,但我需要的更多是 audit/rollback,因为我的用户可能只需要在以后回滚此事务(而不是恢复整个数据库或 table). "Change Data Capture" 不是一个选项,因为我只有标准版。
我真正的问题在于如何存储这些审计信息。我想我需要一个唯一的密钥来跟踪这是一个工作单元,因此所有这些 table 更改都与用户相关的同一组相关联。但是如果我有一个 DELETE WHERE ID = @ID 查询,我如何在删除之前存储所有这些已删除的记录,以便我可以在需要时重新插入它们?我什至可以存储某种大型回滚 T-SQL 脚本,我只是不确定如何生成我可以存储的 INSERT 脚本和 运行 以后的数据即将删除。
我愿意接受任何想法,我只需要一个足够通用的架构来处理多个 tables 以及回滚删除和插入的能力。我更关心回滚能力而不是保持良好的审计table。
您不能开箱即用,因为即使使用完整日志记录,您也可以将整个数据库回滚到某个时间点,但不能回滚到特定事务。
您将不得不为未执行的事务编写一些代码,但我相信简单的审计触发器将为您提供实现它所需的数据。这是一篇帮助您入门的好文章。
我有 SQL Server 2014,标准版。我们有几个 tables,我们从中删除数据,然后将其重新插入到不同的主键下(合并我们系统中实际上相同的两个人的记录)。所有这些更改都是通过 T-SQL 事务执行的。
我了解事务和回滚是如何工作的,但我需要的更多是 audit/rollback,因为我的用户可能只需要在以后回滚此事务(而不是恢复整个数据库或 table). "Change Data Capture" 不是一个选项,因为我只有标准版。
我真正的问题在于如何存储这些审计信息。我想我需要一个唯一的密钥来跟踪这是一个工作单元,因此所有这些 table 更改都与用户相关的同一组相关联。但是如果我有一个 DELETE WHERE ID = @ID 查询,我如何在删除之前存储所有这些已删除的记录,以便我可以在需要时重新插入它们?我什至可以存储某种大型回滚 T-SQL 脚本,我只是不确定如何生成我可以存储的 INSERT 脚本和 运行 以后的数据即将删除。
我愿意接受任何想法,我只需要一个足够通用的架构来处理多个 tables 以及回滚删除和插入的能力。我更关心回滚能力而不是保持良好的审计table。
您不能开箱即用,因为即使使用完整日志记录,您也可以将整个数据库回滚到某个时间点,但不能回滚到特定事务。
您将不得不为未执行的事务编写一些代码,但我相信简单的审计触发器将为您提供实现它所需的数据。这是一篇帮助您入门的好文章。