SQL Server のフルテキスト検索を有効にしている場合、SQL Full-text Filter Daemon Launcer のサービスのログが FDLAUNCHERRORLOG として出力されます。
このサービスのログですが、インストール時のデータルートディレクトリを元に出力のパスが決まるようで、変更するためには少し手間が必要となります。
情報としては、How to move FDLAUNCHERRORLOG from one location to another in SQL 2008 に記載されています。
SQL Server のバージョンによってレジストリのパスは少し変わってくるのですが、基本的な場所としては冒頭で紹介した情報に記載されています。
Resolution
Open registry editor:
Go to the location in “HKLMSoftwareMicrosoftMicrosoft SQL ServerMSSQL10.<INSTANCEID>SetupSQLDataRoot” and change the value of SQLDataRoot to New location
Restart SQL full-text filter daemon launcher service from configuration manager.
SQL Server 2012 の場合は以下の場所ですね。
このレジストリの値を変更することで FDLAUNCHERRORLOG の保存先のパスを変更することができます。
注意する点としては、このレジストリを変更するだけでは場所を変更することができないということです。
紹介した技術情報にも、パスを変更しても新規のファイルが生成されなかったというコメントがいくつか記述されています。
# 他にも変更できなかったという情報はいくつか出てきます。
レジストリを変更しても新しいログが生成されない理由ですが、FDLAUNCHERRORLOG ですが、SQLDataRoot の配下の [Log] ディレクトリに出力がされることが原因となっています。
以下の画面は Process Monitor でサービスとして実行しているプロセスの fdlauncher.exe をフィルタした結果です。
SQLDataRoot ではなく、SQLDataRoot 配下の Log ディレクトリに対して FDLAUNCHERRORLOG のファイル操作を行い、[PATH NOT FOUND] となっていることが確認できます。
Log ディレクトリを作成し、サービスを再起動すると [ACCESS DENIED] になります。
サービスのアカウントである [NT SERVICEMSSQLFDLauncher] がディレクトリ内にファイルを作成する権限がないため、ディレクトリを作成しただけではアクセス権のエラーとなります。
以下はオリジナルのディレクトリの権限になります。
最低限の権限として [フォルダーの一覧/データの読み取り] [ファイルの作成/データの書き込み] が必要となるようですね。
適切な権限が付与されていれば FDLAUNCHERRORLOG のパスを移動することができるようになります。
ログをすべて移動しようとしていろいろ調べているのですが、この辺結構厄介ですね…。