これを行うための最も効率的な方法は何ですか?
それは議論の余地があります - 私は投稿の理由の一部をあえて言います. 個人的には、マシンごとにログの読み取りをスレッドプールし、これらの操作の結果を SQL Server バックエンドに格納します。ただし、これは負荷の高い本番環境のアプローチであり、どれだけの労力を費やすかによっては適用できない場合があります。
理想的には、これは専用の Windows サービスとして記述され、Visual Studio の最近のバージョンではこれらのビルド/デバッグがはるかに簡単になりました。別の実行可能なアプローチは、簡単に実行して出力を確認できるコンソール アプリケーションを作成することです。展開するときに、すべての NSSM ツールを使用して、コンソール アプリケーションを Windows サービスとして実行できるようにすることができます。これはおそらく最も手間がかからない方法ですが、少し扱いにくい方法です。
1 つのサーバーで 1 つのアプリケーションまたはプログラムを実行するのが最も簡単な方法ですが、これは、ログ ファイルが配置されている各マシンの関連する共有にサーバーがアクセスできることを前提としています。
問題の各マシンにサービスを展開し、それをローカルで実行したい場合 (定義されたスケジュールで 1 つのログ ファイルのセットをチェックする 1 つのスレッドがあるため、マルチスレッドの方法全体をバイパスします)、SQL Server バックエンドを持つことは一連のマシン間でフォルダー共有を構成するよりも、SQL Server アカウントを構成してリモート接続を許可する方が簡単なため、より簡単な方法です (私はドメイン管理者ではないため、これを修正する必要があります)。これの欠点は、アプリケーションを更新する必要がある場合、各マシンで更新するのが面倒なことです。
結局のところ、どのアプローチがあなたの状況に最も適しているのでしょうか? マシンの共有を必要とする単一の展開ですか、それとも単一の SQL Server (または他のデータ ストア) インスタンスを使用する複数の展開ですか?