Ano*_*Ano 6 sql-server-2008 db2 transaction iseries
(SQL Server 2008 R2 Standard,数据库完全恢复)
我有一个包含字段 id、firstname、lastname 的表。执行一条语句:
insert into dbo.sometable (id, firstname, lastname) values (1, 'John', 'Smith')
Run Code Online (Sandbox Code Playgroud)
几个小时后,另一个语句被执行:
update dbo.sometable set firstname='Matt' where id=1
Run Code Online (Sandbox Code Playgroud)
是否有一种方法或工具可以让我们查看记录的历史记录(Y 人在 X 日期插入了一条记录,这些是插入的值,并且 B 人在 A 日期更新了相同的记录,并且这些是更新后的新值)?
熟悉 DB2 for i(即 iSeries 上的 DB2)的用户可能知道一个名为 CRTDBFJRN 的 TAA 工具集命令,该命令可以将给定表上的所有事务转储到另一个表中,从而清晰地显示插入、更新和被删除的字段。更新。
SQL Server Enterprise 有 CDC,但我们有标准版;我可以使用触发器通过存储在审计表中来跟踪更改的数据。触发器的使用将需要另外两个对象 - 触发器和审计表,并且触发器将在每次更改时触发。如果工具可以从交易文件中按需重放交易,那就太好了。
当审计师询问财务记录的历史记录(例如,在一天插入和更新)时,您使用什么工具或执行哪些任务,例如:谁更改了此记录,更改了什么,此记录最初是什么时候输入,原始输入时的数据是什么等?
任何帮助将不胜感激。谢谢你。
我已经测试了两个可以提供交易信息的工具,包括何时、谁、使用哪台计算机和应用程序
ApexSQL Audit为您创建审核触发器,因此如果您不擅长为每个表编码和创建触发器,这是一个选项
它有 2 个内置报告,它的好处是它将所有捕获的事务保存到 2 个表中,因此您可以对它们运行查询并提取您需要的任何信息
不幸的是,它无法重播交易
另一个是ApexSQL Log。它读取事务日志和 trn 备份,因此数据库必须处于完整恢复模式。除了数据事务之外,它还跟踪模式更改(创建表、更改函数等)并且可以重放事务
小智 5
我刚刚遇到了可能感兴趣的StandardCDC:
StandardCDC 捕获指定表的数据操作语言 (DML) 更改并以关系格式存储结果。捕获表反映了被跟踪对象的列列表,带有仅存储特定列的选项。
触发器和审计/历史表。以及主表中用于插入/更新的列
从审计/历史表中,您可以及时获取数据库在任何时间点的状态。
编辑:
在一个表上有多个写入路径是很常见的,触发器将确保捕获更改。如果您使用表值参数仅允许一个存储过程实际写入(由其他代码调用),则这种情况会发生变化。
您还必须考虑实际的最终用户何时位于代理之外(例如通过 Web 服务器),您的客户端代码必须传入凭据(或启用直通)。