我们有一个相对简单的 SQL Server 2008 数据库 (30 MB) 的大事务日志 (1.3 GB)。它(日志)包含自 db 首次投入生产以来的所有更新,并且(现在我们看到它)代表了我们感兴趣的宝贵时间数据来源。
有什么方法可以在类似的数据库上“重播”整个日志(就像原来的一样,但添加了历史表和触发器)?
通过这种方式,我们可以重建相同的数据库,但使用从日志中“提取”的时间数据。这是我们第一次忽略的宝贵知识,不应依赖于服务器日志文件。
更新
我对“大”事务日志没有任何问题。我不想截断日志。其中包含的时间信息很有价值(我真诚地希望现在会清楚,因为这是我第三次重复)。
对于那里的“西部最快的枪手”,请在上面的“我们有一个大交易日志......”之后继续阅读。我开始认为用这些词开始问题实际上是我的错,因为似乎 80% 的读者认为这个问题与日志截断有关。
对于任何可能希望“建议”另一个备份和日志截断作为“解决方案”的人(顺便说一句,完全没有抓住重点),请阅读本文。
事务日志包含自上次日志截断以来应用于数据库的修改的二进制增量;这里的关键字是“二进制”:它们不包含 SQL 查询或类似的东西,但实际上更类似于要应用于程序的二进制补丁。
因此,它们只能在它们最初链接到的确切物理数据库文件上重放;在另一个数据库上重放它们(即使使用相同的模式)就像将补丁应用到不同的可执行文件上一样:根本不可能。
你也不能在同一个数据库上重放它们,如果它被修改了;即,您无法从旧备份恢复数据库,使其联机,对其进行任何修改,然后针对它重放日志;一旦您使数据库完全联机,您实际上就失去了任何日志重播功能(在 SQL Server 还原操作中甚至有一个特定的标志)。
| 归档时间: |
|
| 查看次数: |
7094 次 |
| 最近记录: |