Sql server 监视SQL日志文件

Sql server 监视SQL日志文件,sql-server,logging,monitor,Sql Server,Logging,Monitor,在客户机上部署项目后,sql db日志文件已增长到450G,尽管db大小小于100MB,但日志模式设置为简单模式,事务由windows服务发送,该服务每30秒发送一次插入和更新事务。 我的问题是,如何知道db日志文件增长的原因? 我想知道如何监视日志文件,以了解导致问题的确切事务是什么。 我应该调试前端吗?或者有一种方法公开导致db日志文件增长的事务。 谢谢。日志文件是文本文件,根据您的日志级别以及您收到的错误和消息数量,这些文件可能会快速增长 你需要用这样的东西来轮换你的日志,虽然从你的问题来

在客户机上部署项目后,sql db日志文件已增长到450G,尽管db大小小于100MB,但日志模式设置为简单模式,事务由windows服务发送,该服务每30秒发送一次插入和更新事务。 我的问题是,如何知道db日志文件增长的原因? 我想知道如何监视日志文件,以了解导致问题的确切事务是什么。 我应该调试前端吗?或者有一种方法公开导致db日志文件增长的事务。
谢谢。

日志文件是文本文件,根据您的日志级别以及您收到的错误和消息数量,这些文件可能会快速增长

你需要用这样的东西来轮换你的日志,虽然从你的问题来看,听起来你在使用Windows,所以不确定解决方案是什么

日志循环的基础是获取日志的每日/每周版本,并使用gzip或类似工具压缩日志,然后销毁未压缩的版本


由于它是重复性很强的文本,相比之下,这将使文件非常小,应该可以解决您的存储问题。

如果有打开的事务,日志文件空间将不会被重用。您可以使用下面的DMV验证日志空间重用的原因

select log_reuse_wait_desc,database_id from sys.databases
在您的情况下,您的数据库设置为simple,数据库为100MB。但是日志已增长到450GB。这是非常巨大的

我的理论是,可能存在一些打开的事务,这阻止了日志空间的重用。日志文件不会在增长后收缩


正如您所知,您可以在DMV上运行并查看,此时是什么阻止了日志空间重用,您无法及时返回以了解是什么阻止了日志空间重用请注意,简单的恢复模型不允许日志备份,因为它保留的信息量最少,并且依赖于检查点,因此如果这是一个关键数据库,考虑通过计划保护客户。是的,您必须使用更多的空间,但磁盘空间很便宜,您可以更好地控制时间点恢复和管理日志文件。尽量简明扼要:

  • A) 简单模式下的数据库仅在创建时截断事务日志中的事务

  • B) 不幸的是,大量的
    未提交事务
    ,包括
    备份
    、创建
    快照
    、以及
    日志扫描
    ,除此之外,将阻止您的数据库创建这些检查点,并且在这些事务完成之前,您的数据库将不受保护

  • 您当前的系统依赖于拥有正确版本的
    .bak
    文件,这取决于文件的大小,可能意味着数小时的潜在损失

换句话说,这是一个荒谬的大小,因为您的数据库无法创建一个检查点来经常截断这些事务

关于日志文件的一点注意事项

最重要的是,日志文件不会在每次提交事务时自动截断(否则,您只能返回上次提交的事务)。频繁进行日志备份将确保保留相关更改(时间点),并且
SHRINKFILE
将日志文件压缩到可用的最小大小/指定的大小

用于查看日志文件的使用量和大小。执行完全备份后,日志文件将被截断为剩余的未提交/活动事务。(不要将此与缩小尺寸混淆)

关于调查您的交易的一些建议:

  • 您可以使用系统表查看最昂贵的缓存、频繁计划和活动计划
  • 您可以使用未记录的扩展存储过程来搜索日志文件,
    fn\u dblog
  • Pinal在这个主题上有很多信息,你可以在这个网页和链接上阅读:

更改了答案,因为简单恢复确实会截断日志文件…但只有在创建检查点之后…在这种情况下,由于数据库活动,这是不可能的。更改了我的答案以反映我对简单恢复截断日志文件的方式的更正。本质上,它在截断非活动事务之前依赖于检查点……这就是它增长到如此巨大规模的原因。