sql-server-2008 – 在更改的数据库模式上重播SQL Server事务日志

前端之家收集整理的这篇文章主要介绍了sql-server-2008 – 在更改的数据库模式上重播SQL Server事务日志前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于相对简单的sql Server 2008数据库(30 MB),我们有一个大的事务日志(1.3 GB).它(log)包含自db第一次投入生产以来的所有更新(现在我们看到它)代表了我们感兴趣的时间数据的宝贵来源.

有一些方法可以在类似的数据库上“重放”整个日志(就像原来的那样,但是添加了历史表和触发器)?

这样我们可以重建相同的数据库,但是从日志中“提取”时间数据.这是我们第一次忽略的有价值的知识,不应该依赖于服务器日志文件.

UPDATE

我对“大”事务日志没有任何问题.我不想截断日志.包含在其中的时间信息是有价值的(我真诚地希望它现在很清楚,因为这是我重复的第三次).

对于那里的“西部最快的枪手”,请在“我们有一个大的交易记录……”之后继续阅读.我开始认为用这些词开始问题实际上是我的错误,因为看起来有80%的读者认为这个问题是关于日志截断的.

对于那些可能希望“建议”另一个备份和日志截断作为“解决方案”(BTW,完全忽略了这一点)的人,请阅读此内容.

解决方法

事务日志包含自上次日志截断以来应用于数据库修改的二进制增量;这里的关键字是“二进制”:它们不包含SQL查询或类似的东西,但实际上更类似于要应用于程序的二进制补丁.

因此,它们只能在最初链接到的确切物理数据库文件上重放;在另一个数据库上重放它们(即使使用相同的模式)就像将补丁应用于不同的可执行文件到它所编写的那个:完全不可能.

如果修改了它,你也不能在同一个数据库上重放它们;即,您无法从旧备份还原数据库,将其联机,对其进行任何修改,然后针对它重播日志;一旦将数据库完全联机(在sql Server还原操作中甚至存在特定标志),您实际上会丢失任何日志重播功能.

猜你在找的MsSQL相关文章