首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事务日志查询

事务日志查询
EN

Database Administration用户
提问于 2016-12-25 22:52:16
回答 1查看 647关注 0票数 1

我使用这些查询访问Server数据库中的事务

代码语言:javascript
复制
Use Action
Go
Select * from fn_dblog(null,null)

该查询工作正常,但当数据库中的一个表保存超过10万条记录时,只加载7行。接下来,我使用此查询恢复历史记录。

代码语言:javascript
复制
SELECT  * FROM fn_dump_dblog(NULL,NULL,'DISK',1
,'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Action.bak'
,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL,   NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL,   NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL,   NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL,   NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL,   NULL,NULL,NULL,NULL,NULL,NULL
,NULL,NULL,NULL,NULL)

此查询工作正常,但只恢复了37行。如果还原备份,一个表中有超过10万条记录。当我运行这些查询时,我希望看到成百上千行。

唯一合乎逻辑的答案是文件中的事务是有限的。但是事务日志的文件大小是1.5GB。是否可以运行任何命令来检查日志文件中的事务数?

有人能解释我如何使这些查询恢复事务日志中的每个事务吗?

EN

回答 1

Database Administration用户

发布于 2016-12-26 01:42:51

当数据库中的一个表保存超过100,000条记录时,此查询工作,但只加载7行。

sys.fn_dblog的特点是它只显示日志的活动部分。如果您希望通过这种方式发生的每一次事务,我可能会建议使用你的时间更有用

此查询工作正常,但只恢复了37行。如果还原备份,一个表中有超过10万条记录。当我运行这些查询时,我希望看到成百上千行。

单个日志备份并不能保存发生过的所有事情,您将需要进行所有日志备份。如果您的数据库曾经处于简单的恢复模型中,或者是在完全恢复模型中,并且在进行完全备份之前已经在其中完成了任何操作,那么您将不会得到所有的东西。句号。

仅仅因为表中有100 k记录,也不意味着有100 000个事务。它可能是一个大的交易,它可能是两个交易插入200 K,然后第三个交易删除100 K等令人作呕。

唯一合乎逻辑的答案是文件中的事务是有限的。

是的,在任何给定的点上你都能读到什么,因为日志文件可以被认为是一个巨大的环缓冲区,它写在旧的不活动部分上。它是循环的,并且将继续重复使用不活动的部分,除非它填满并且必须增长,因为所有当前空间都是活动的。

是否可以运行任何命令来检查日志文件中的事务数?

您已经拥有了它们,您只需要在数据库存在的所有时间内对所有日志备份执行此操作。

此外,这也没有考虑到实际读取日志结构,而日志结构没有公开记录。这甚至不包括新的日志结构,比如Hekaton,它在日志结构中有自己的结构,或者设置某些行为所需的任何跟踪标志。

你最好用你的时间做点别的事。如果需要作为数据库恢复的一部分,那么我将雇用一些专业人员。如果这纯粹是为了学术目的,那么我建议创建一个非常小的数据库,将其放入完整的恢复模型,进行完全备份,并且在您看完日志的那一部分之前不要进行日志备份。

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/159148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档