WSS の検索を実行するとイベント ID 10038,10039,10040のエラーが出る
Windows Sharepoint Serviceで検索をすると、「検索サービスに接続できませんでした」という画面になってしまい、悔しい思いをしていました。いろんな環境で何台作ってもこのエラーが出てしまうので、OSのせいではなくて、間違いなく設定の問題です。
まず、Windowsのイベントログを見てみると、タイトルの通り、10038,10039,10040というイベントIDが出ています。海外でも割と引っかかる人が多い問題のようで、困っている人が多く出ています。相変わらず日本語で引っかかる情報がないのでメモ。以下の操作は管理者権限のユーザで実行してください。
画面の通り、「サーバの全体構成→構成の管理→サービスアカウント」で、WSSのサービスが動作するアカウントを選択することができます。ここ、ついサボってしまうかもしれませんが、罠です。特にWindowsサービスの一覧から出てこないので、気づきにくい。WebアプリケーションプールでWebサービスを選択して、設定します。
また、ローカルアカウントのないDomain Controllerなどで動作させる場合、明示的にActive Directoryのユーザを指定しましょう。OKを押して、IISを再起動すればOKです。アクセスしていない時間を見計らって、コマンドプロンプトからIISRESET /NOFORCEを実行すれば設定が反映されます。
さて、これだけではすみません。さらに設定が必要になります。「管理ツール」から「コンポーネントサービス」(dcomcnfg.exe)を実行します。
コンソールルート→コンポーネントサービス→コンピュータ→マイ コンピュータ→DCOMの構成→IIS WAMREG admin Serviceを選択し、プロパティを開きます。
「セキュリティ」タブの「アクセス許可」の「カスタマイズ」を選択して、編集します。ここで、WSSのアプリケーションプールを実行するユーザを追加して、「ローカルからのアクティブ化」にチェックを入れます。これで検索の実行ができます。
ところで、WSSの検索ってサイト内のみなんですね…サイト間検索はMOSS(Microsoft Office Sharepoint Service)使えってことなんでしょうか。SDKでなんとかできないものだろうか。所詮SQL Serverにクエリ投げているだけだし...。