目前,我的生产SQL Server 2008 R2服务器的数据库日志正在逐渐失控:
上面提到的服务器每天都会安排备份@ 1am&每15分钟进行一次translog备份。
数据库以完全恢复模式复制到订阅者。从上面的节点(发布者)推送Replciation。订户上的相同db日志文件是〜<磁盘上100 GB。
我尝试和修复的方法:
上面没有任何工作,所以我尝试缩小使用DBCC SHRINKFILE无效的日志文件。尺寸不会改变。
任何人都可以告诉我,作为SQL Server DBA解决上述问题我有什么问题或需要做什么?
答案 0 :(得分:0)
可能阻止您缩小translog文件的事情:
查看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.右键单击您的数据库>任务>缩小>档案>文件类型=日志 比不上