none
サービスプログラムだとエラー RRS feed

  • 質問

  • お世話になっております。

     

    サービスプログラムから、データベースAとデータベースBの同期をとるプログラムを作成しております。

     

    同期を取るプログラムをサービスで定期的にコールしています。

     

    同期を取るプログラムの動作確認をしたところ正常にデータベースの動機が取れております。

     

    ところがサービスから実行すると

    'hoge.mdb'は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。

    となりデータが取得できません。

     

    パスは合っているのか、アクセス許可はあるのか、と調査もしましたが

    単体では動作しているので、同コードでアクセス出来ないとは考えられません。

     

    なぜサービスからの動作だと、上記エラーが起きるのでしょうか??

     

    どうか、ご教示ください。

     

    追記:

    大事な事を忘れていました。

    本プログラムは、XPでVS2005にて開発しておりますが

    動作PCは、Windows7の64bit版です。

     

    Wn32では動作するのに、64bitでは動作しないということです。

    2011年2月3日 2:17

回答

  • >64bit環境で、更に参照するデータベース(mdb)がネットワーク上にある場合にのみエラーになります。

    >ローカルのデータベースだと正常に動作します。

    サービスはどんなアカウントで実行してますか?

    サービスを実行しているアカウントに、ネットワークおよびネットワーク資源を利用する権限がないんじゃないですか?

    サービスにネットワークアクセスをさせるなら、サービス実行用のアカウントを作成して、必要最小限の権限のみ与えるのが望ましいです。

    • 回答としてマーク segment 2011年2月3日 7:39
    2011年2月3日 5:28

すべての返信

  • すみません、更に追記です。。

     

    64bit環境で、更に参照するデータベース(mdb)がネットワーク上にある場合にのみ

    エラーになります。

    ローカルのデータベースだと正常に動作します。

    2011年2月3日 2:50
  • アクセス許可がないかパスが間違っているのではないですか?

    そもそも権限が違う…単体で起動するときは administrator 等の特定のユーザで、サービスから起動するときは SYSTEM 等でログインしているとか、

    ネットワーク上にアクセスするときの認証情報をどのようにして提供しているかとか、

    指定されたパスに特定のユーザにしか存在しないパス(プロファイルや、ネットワークドライブなど、ログインする人によって違うようなもの)が含まれているとか、

    可能性はいくらでもあるので、何を確認してOKだと判断されたかを明示されると、他の人もこたえやすくなるのではないかと思います。

    2011年2月3日 3:21
  • >64bit環境で、更に参照するデータベース(mdb)がネットワーク上にある場合にのみエラーになります。

    >ローカルのデータベースだと正常に動作します。

    サービスはどんなアカウントで実行してますか?

    サービスを実行しているアカウントに、ネットワークおよびネットワーク資源を利用する権限がないんじゃないですか?

    サービスにネットワークアクセスをさせるなら、サービス実行用のアカウントを作成して、必要最小限の権限のみ与えるのが望ましいです。

    • 回答としてマーク segment 2011年2月3日 7:39
    2011年2月3日 5:28
  • すみません、情報不足でした。

     

    サービスに付与している権限は、ローカルでのみ有効なものであってネットワーク上ではアクセス

    できなかったようです。

     

    ご迷惑をおかけしました。

    2011年2月3日 7:35
  • >サービスを実行しているアカウントに、ネットワークおよびネットワーク資源を利用する権限がないんじゃないですか?

    まったく、その通りでした。

    解りやすい説明、ありがとうございました。

     

    また、サービスのアカウントを設定するだけではなく

    MDBの指定の際に

    X:hoge\hoge.mdb

    と、割りあってたネットワークドライブを指定しており、エラーが出ていました。

    現在はUNCで指定し、動作しております。

     

    ありがとうございました。

    2011年2月3日 7:39