如何从 Sql Server 2005 Express 版本的日志文件(.ldf)中查询?
Posted
技术标签:
【中文标题】如何从 Sql Server 2005 Express 版本的日志文件(.ldf)中查询?【英文标题】:How to query from log files (.ldf) of Sql Server 2005 Express edition? 【发布时间】:2010-01-27 09:32:22 【问题描述】:我想这样做,因为我想知道特定行被更改了多少次。
这可能吗?
谢谢
【问题讨论】:
这是一次性的临时要求还是您希望定期执行的流程? 这是我想定期执行的过程。假设我想生成一份关于特定行在一个月内更改了多少次的报告。 【参考方案1】:读取日志文件要么需要商业工具,要么需要大量的 SQL 内部知识。您可以使用以下命令查看一些原始输出: 选择 * from ::fn_DBlog(null,null)
实际上解码以找到被更改的相同记录并确保提交任何更改等将是一项艰巨的任务。因此,您能够做到这一点是“可能的”,但不是很“可能”。
如果您需要数据库中的该功能,那么您应该查看代码中的触发器/逻辑。
【讨论】:
我想走不可能的路线。关于如何开始这个的任何指示? (链接什么的?) 看一下blackhat.com/presentations/bh-usa-07/Fowler/Presentation/… 幻灯片 21 - 您很快就会意识到解码的难度。 我猜我们获取旧事务的方式对于 MS SQL Server 和 Oracle 会有所不同。这是真的?如果是这样,我想我必须离开这个并继续前进。无论如何,更多链接会有所帮助。谢谢老兄。 是的,Oracle 将完全不同。【参考方案2】:迟到的答案,但我希望它对新读者有用……
您可以尝试的另一个功能是 DBCC LOG,但不幸的是,这是与 fn_dblog 相同的未记录功能。
SQL Server 中事务日志的问题在于,它从未打算用于此目的,而只是用于允许时间点恢复和事务属性。
有一个广告log reader from ApexSQL你可以试试。
这里还有几个类似的帖子,可能会让您朝着正确的方向前进。
Read the log file (*.LDF) in sql server 2008
SQL Server Transaction Log Explorer/Analyzer
【讨论】:
【参考方案3】:你可以使用这个程序来做到这一点 http://www.red-gate.com/products/SQL_Log_Rescue/index.htm
【讨论】:
此程序仅适用于 SQL Server 2000【参考方案4】:考虑使用 SQL Server 2008。
SQL Server 2008 有一个名为Change Data Capture 的新功能,可以完全满足您的要求,即随着时间的推移跟踪数据修改。
查看日志文件以跟踪更改不是明智的做法。这样做将为您提供有限的历史记录,其范围还取决于您用于数据库的恢复模型。
通过使用日志表并使用 SQL Server 触发器填充它,您可以通过少量开发“推出自己的”解决方案。这种解决方案的适用性当然取决于您的业务案例。
请查看以下 TechNet 文章以获得一些有趣的阅读:
Tracking Changes in Your Enterprise Database
【讨论】:
以上是关于如何从 Sql Server 2005 Express 版本的日志文件(.ldf)中查询?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2005 SSIS - 如何从文件的第一行获取特殊信息
如何从 Sql Server 2005 Express 版本的日志文件(.ldf)中查询?