SQL Server日志文件很大

时间:2016-02-10 22:14:05

标签: sql-server replication ldf

目前,我的生产SQL Server 2008 R2服务器的数据库日志正在逐渐失控:

  • DATA文件:磁盘上的D:\ Data ... \ MyDB.mdf = 278859 MB
  • 日志文件:磁盘上的L:\ Logs ... \ MyDB_1.ldf = 394542 MB

上面提到的服务器每天都会安排备份@ 1am&每15分钟进行一次translog备份。

数据库以完全恢复模式复制到订阅者。从上面的节点(发布者)推送Replciation。订户上的相同db日志文件是〜<磁盘上100 GB。

我尝试和修复的方法:

  1. 运行db的完整备份(需要1h:47m)
  2. 运行每15分钟运行一次的translog备份作业。 (需要1m:20s)
  3. 运行db
  4. 的另一个完整备份

    上面没有任何工作,所以我尝试缩小使用DBCC SHRINKFILE无效的日志文件。尺寸不会改变。

    任何人都可以告诉我,作为SQL Server DBA解决上述问题我有什么问题或需要做什么?

4 个答案:

答案 0 :(得分:0)

可能阻止您缩小translog文件的事情:

  1. 您的数据库正在进行长时间运行事务
  2. 您的复制分发代理程序运行频繁
  3. 查看translog文件大小的大小,很可能是由第二种可能性引起的。

    您的复制分发代理程序运行频繁

    SQL Server日志读取器代理将translog文件标记为正在使用并防止它们缩小,这是SQL Server在备份translog文件后所执行的操作。如果此过程频繁且足够长,则可能会阻止您的translog文件在计划备份的translog上缩小。

    请查看此MSDN transactional explaination以及如何修改日志阅读器代理。

    描述类似问题的thread in MSDN forum,此处有DBCC查询可帮助您识别可能阻止translog文件的运行事务(DBCC OPENTRAN)。

    您的数据库正在进行长时间的交易

    您可以使用DBCC OPENTRAN检查任何长时间运行的事务,以及正在运行的进程然后决定如何处理它。一旦长时间运行的事务完成,您应该能够缩小日志文件。

答案 1 :(得分:0)

运行sp_who2后,我注意到日志上一个长时间运行的事务正在无法控制地增长。我在该SPID上使用了kill而不是我正在收缩日志文件。

答案 2 :(得分:0)

您应该使用相同的表创建空白数据库,并将旧数据库数据从迁移脚本迁移到空白数据库。 例如: INSERT INTO客户(cust_id,姓名,地址) SELECT cust_id,Name,Address 来自olddb.customers

- 此脚本应在新的空白数据库中运行

答案 3 :(得分:-2)

您可以手动缩小日志文件 1.右键单击您的数据库>任务>缩小>档案>文件类型=日志  比不上