Как остановить SQL Server от записи информационных строк в файлы журнала SQLFT?
Недавно я проверил экземпляр SQL Server 2012 только для того, чтобы убедиться, что жесткий диск заполнен, и после исследования произошедшего это были информационные строки Полнотекстового поиска, заполняющие файлы журнала и дисковое пространство каждую минуту. Он добавил до нескольких ГБ информации журнала, как в следующей строке:
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.
В конце концов, решение заключалось в том, чтобы добавить в планировщик задач простой однострочный сценарий PowerShell, который будет очищать журналы SQL Server старше 30 дней, выполняемый каждый день:
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 и имени экземпляра.