![如何阻止 SQL Server 将信息行记录到 SQLFT 日志文件?](https://linux22.com/image/657942/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20SQL%20Server%20%E5%B0%86%E4%BF%A1%E6%81%AF%E8%A1%8C%E8%AE%B0%E5%BD%95%E5%88%B0%20SQLFT%20%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我最近检查了一个 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 版本和实例名称。