如何阻止 SQL Server 将信息行记录到 SQLFT 日志文件?

如何阻止 SQL Server 将信息行记录到 SQLFT 日志文件?

我最近检查了一个 SQL Server 2012 实例,结果发现硬盘已满,调查后发现,每分钟都有全文搜索信息行填满日志文件和磁盘空间。它加起来有几 GB 的日志信息,如下行:

2015-01-26 14:08:58.40 spid42s     Informational: Resuming full-text population for table or indexed view '[db].[dbo].[table]' in database 'db' (table or indexed view ID '690817523', database ID '5'). Prior number of documents processed: 0, error encountered: 0.

我的问题是如何防止 SQL Server 通过全文搜索引擎将任何“信息”详细信息写入其日志文件,或者(不太推荐的方法)如何完全禁用其日志记录?

答案1

如果无法重新启动实例,可以使用 sp_fulltext_recycle_crawl_log 安排日志清理。更多信息:http://www.ruben-j.com/microsoft/t-sql/sql-fulltext-crawl-log/或者https://social.msdn.microsoft.com/Forums/windowsapps/en-US/b9420843-666e-4f33-b987-2624cdfa7acd/sql-server-2008r2-fulltext-logfile-sqlftlog-maintenance?forum=sqlkjmanageability或者将问题发布到 dba.stackexchange。

答案2

最后的解决方案是向任务计划程序添加一个简单的单行 powershell 脚本,该脚本将清除超过 30 天的 SQL Server 日志,每天执行:

Get-ChildItem "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\*" -Recurse | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item

更改 MSSQL11.MSSQLSERVER 以匹配您的 SQL Server 版本和实例名称。

相关内容