Windows XP を再インストールする機会があり、SQL Server 2008 も入れなおしたのだけれど、SQL Server のオプションで入れた Integration サービス (サービス名: MsDtsServer100) がサービスの起動時に警告を出しているようだ。
-- イベントのプロパティ ここから --
ソース: SQLISService100
分類: Service Control
種類: 警告
イベント ID: 274
ユーザー: N/A
説明
Microsoft SSIS Service:
Registry setting specifying configuration file does not exist.
Attempting to load default config file.
-- イベントのプロパティ ここまで --
http://msdn.microsoft.com/ja-jp/library/cc627360.aspx
MSDN ライブラリの情報によると Integration Services サービスの構成ファイルの場所が書かれているレジストリー エントリーが削除されたとか、エントリーの値が削除されたとか、エントリーにアクセスできないってことらしい。
で、対策としては正しい値を書き込むか、サービスの実行アカウントがレジストリーへの読み取り権限を持っているかを確認しろ、と。
エントリーのパスは "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\ServiceConfigFile" っていうキーの中。
生まれてこのかた、こんなエントリーを削除した覚えも編集した覚えもない私としてはアクセス権を疑ったわけですが、上記のキーを開いてみると "(既定)" っていう文字列のエントリーがあるけれどデータは空っぽなわけですよ。
既定のエントリー以外にきちんと名前が入ったエントリーが必要なのか、既定のエントリーに値を書き込めばいいのかわからんのですが、これは明らかにインストール時から何もされていないってことじゃないでしょうかね。
で、上記ページにはこのキーの中にどのように書けばいいのか書かれていないし、構成ファイルがどこにあるのかもわからない。
もうちょい調べたら別のページで発見しました。
MSDN ライブラリ "Integration Services サービスの構成"
http://msdn.microsoft.com/ja-jp/library/ms137789.aspx
構成ファイルは "%ProgramFiles%\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml" です。
自分の環境を見てみるとたしかに同じ場所に同じファイルがあります。 そんで既定の構成ファイルの例も載ってるんですが、比べてみても全く同じです。つーことで、私の構成ファイルは場所も中身も既定のままってことになります。
とりあえずレジストリーを何とかしてみようってことで "(既定)" のエントリーに構成ファイルのパスを書こうとするわけですが、なんて書いたらいいかも上記ページに書いてありました。「構成ファイルの場所の変更」 ってところに載っているとおり、"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml" と入れてみる。(ちなみに MSDN のページに掲載されているパスはファイル名の前に不要なスペース文字が入っているのでそのままコピペするとエラーになりますよ)
サービスの一覧から "SQL Server Integration Services 10.0" を再起動して、イベント ビューアに警告がでていないのを確認したら解決。
-- イベントのプロパティ ここから --
ソース: SQLISService100
分類: Service Control
種類: 警告
イベント ID: 274
ユーザー: N/A
説明
Microsoft SSIS Service:
Registry setting specifying configuration file does not exist.
Attempting to load default config file.
-- イベントのプロパティ ここまで --
http://msdn.microsoft.com/ja-jp/library/cc627360.aspx
MSDN ライブラリの情報によると Integration Services サービスの構成ファイルの場所が書かれているレジストリー エントリーが削除されたとか、エントリーの値が削除されたとか、エントリーにアクセスできないってことらしい。
で、対策としては正しい値を書き込むか、サービスの実行アカウントがレジストリーへの読み取り権限を持っているかを確認しろ、と。
エントリーのパスは "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\ServiceConfigFile" っていうキーの中。
生まれてこのかた、こんなエントリーを削除した覚えも編集した覚えもない私としてはアクセス権を疑ったわけですが、上記のキーを開いてみると "(既定)" っていう文字列のエントリーがあるけれどデータは空っぽなわけですよ。
既定のエントリー以外にきちんと名前が入ったエントリーが必要なのか、既定のエントリーに値を書き込めばいいのかわからんのですが、これは明らかにインストール時から何もされていないってことじゃないでしょうかね。
で、上記ページにはこのキーの中にどのように書けばいいのか書かれていないし、構成ファイルがどこにあるのかもわからない。
もうちょい調べたら別のページで発見しました。
MSDN ライブラリ "Integration Services サービスの構成"
http://msdn.microsoft.com/ja-jp/library/ms137789.aspx
構成ファイルは "%ProgramFiles%\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml" です。
自分の環境を見てみるとたしかに同じ場所に同じファイルがあります。 そんで既定の構成ファイルの例も載ってるんですが、比べてみても全く同じです。つーことで、私の構成ファイルは場所も中身も既定のままってことになります。
とりあえずレジストリーを何とかしてみようってことで "(既定)" のエントリーに構成ファイルのパスを書こうとするわけですが、なんて書いたらいいかも上記ページに書いてありました。「構成ファイルの場所の変更」 ってところに載っているとおり、"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml" と入れてみる。(ちなみに MSDN のページに掲載されているパスはファイル名の前に不要なスペース文字が入っているのでそのままコピペするとエラーになりますよ)
サービスの一覧から "SQL Server Integration Services 10.0" を再起動して、イベント ビューアに警告がでていないのを確認したら解決。