我使用 SQL Server 2008 R2 和 SSAS 和 SSIS。
我创建了一个阶段数据库,每天都从 OLTP 数据库中填充。
然后在数据清理和集成数据 (ETL) 之后,我最常将我的数据传输到DataWarehouse
.
现在我需要做的是如何更改我的 OLTP 数据库中的跟踪。
我知道解决方案Trigger
(我可以在 OLTP 数据库中的所有表上触发触发器,并在触发器内从 Inserted 和 Deleted 表中记录数据 Inserted/Deleted/Updated)
但是我的 OLTP 数据库非常大(大约 80,000,000 条记录)并且创建触发器使我的业务变慢。
我从这个网站上找到了一些这样的查询:
SELECT
*
FROM
sys.fn_dblog(NULL,NULL)
显示LDF
文件中的所有记录。
我找到了一些可以读取 LDF 文件然后提取命令(插入/更新/删除)命令的第三方软件,例如ApexSQL
我在这个网站上找到了一个问题How to view transaction logs in SQL Server 2008
最后我认为如果第 3 方可以从 LDF 文件中提取此命令,为什么我们不能提取该命令?!?
另一方面,我需要在 OLTPs 数据库中找到像 Alter Table 和 Alter Field 这样的 DDL 命令来更改我的阶段数据库。
我发现这个链接可以从 LDF 文件中恢复已删除的行。