none
SQL Server Replication設定にてエラー RRS feed

  • 質問

  • レプリケーションの作成を行ったところ、Replication MonitorのPublisherに以下のエラーメッセージが表示され、レプリケーションが実行されません。同じユーザーでのレプリケーション再作成、および他のDomain Adminsグループに所属しているユーザでのレプリケーション再作成を行いましたが、何れも状況は変わらず、同様のエラーが発生しました。======================================
    The job failed.  Unable to determine if the owner [username] of job [jobname?] has server access (reason: Could not obtain information about Windows NT group/user '[username]', error code 0x5. [SQLSTATE 42000] (Error 15404)  The statement has been terminated. [SQLSTATE 01000] (Error 3621)).
    ======================================
    ※上記の[username]の部分には、レプリケーションの設定を行ったユーザー名が記載されています。このアカウントは、所属ドメインのDomain Admins権限が割り当てられています。


    このメッセージから、原因は何が考えられますでしょうか?
    レプリケーション設定を行う際、必要な権限が不足しているのでしょうか。



    以上よろしくお願い致します。


    【構成】
    OS:Windows Server 2003 R2 Enterprise Edition SP2
    DB:SQL Server 20005 Enterprise Edition (SPなし)

    サーバA:ディストリビューション、パブリケーション
    サーバB:サブスクリプション(pull)

    レプリケーションの種類:transaction replication

    2009年10月11日 11:46

すべての返信

  • momo-ttb さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。

    私の方で調べてみましたところ、momo-ttb さんと同じくエラー 15404 に遭遇された方が、英語版 TechNet フォーラムに質問を投稿されていました。
    http://social.msdn.microsoft.com/forums/en-US/sqlreplication/thread/52601866-23d6-4150-bcf5-dfcad24f43c3/ (英語)

    上記のスレッドでは、MVP の Hilary Cotter さんが2007年10月9日午後6時26分に投稿されている回答に [回答としてマーク] のチェックが付いていますので、参考までにその内容を和訳して紹介させていただきますね。
    → 「SA アカウントを使用して、問題となっている SQL Server を Enterprise Manager に登録し、その後でパブリケーションを作成してください」

    という訳で、momo-ttb さんも一度、この方法を確認されてみてはいかがでしょうか?
    エラー 3621 に関しましては、一度上記の方法を試していていただいた後で、まだ発生するかどうかをご確認いただければと思います。

    こちらの情報がお役に立てることを願っています。
    それでは、また! (^_^)/


    _______________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2009年10月13日 7:18
  • 松本です。
    私もこのエラーによく遭遇していました。
    Windows のローカル ユーザーをジョブの所有者にしていて、ハードウェア リプレイスを行った場合などで
    確実に見ることができるエラーです。
    あと、momo-ttb さんのように Administrators 権限をもっているユーザーを所有者にした場合でも
    見たことがあります。この場合は、SQL Server 認証用のログイン アカウント(sa)などに変更することで
    このエラーを回避できました(Windows 認証モードでも、ジョブの所有者は sa で大丈夫でした)。
    あと、OS を再起動した後に、Windows ユーザーにジョブの所有者を戻してみたら、
    なぜかこのエラーが消えて、ジョブが実行できるようになった、ということもありました。

    > 「SA アカウントを使用して、問題となっている SQL Server を Enterprise Manager に登録し、
    > その後でパブリケーションを作成してください」
    >
    ここの部分ですが、パブリケーションを作成し直さなくても、
    ジョブの所有者を変更するだけで回避できるかもしれません。
    2009年10月15日 18:20
  • ジョブの所有者が、Windows ユーザーの場合、ジョブを実行時、sp_sqlagent_has_server_access を実行して、ジョブの所有者にアクセス権があるかどうかをチェックし、上記のストアドプロシージャにてエラーが発生した場合、" has server access (reason: Could not obtain information about Windows NT group/user '[username]' " というエラーが発生したという記憶があります。

    皆さんの言われている ジョブ所有者を "sa" にすることにより、sp_sqlagent_has_server_access のチェックは行われないため、上記のエラーは改善されると思います。

    2009年10月16日 14:23
  • 皆様、返信ありがとうございました。

    > 「SA アカウントを使用して、問題となっている SQL Server を Enterprise Manager に登録し、
    > その後でパブリケーションを作成してください」
    >
    こちらを試しましたが、エラーが解消できませんでした。

    ですが、エラーが発生したきっかけが分かりました。
    最初のPublisherを作成した際に、プロキシアカウントを指定していますが、
    そこで間違ったパスワードを入れてしまうと、上記のエラーが発生してしまいます。
    パスワードを正しいものに直しても、違うプロキシアカウントに設定しなおしても、
    distributionデータベースを作りなおしても直りませんでした。
    エラーログに、
    > SQLServer Error: 22046, Encryption error using CryptProtectData.
    > [LOG] Unable To Read Local Eventlog (reason: The Parameter Is Incorrect)
    が出力されています。

    ※エラーとなったステップで、プロキシアカウントからサービスアカウントに変更するとジョブが実行できますが、
    「Unable To Read Local Eventlog (reason: The Parameter Is Incorrect)」 のログが消えません。

    ちなみに、SQLサーバーおよびSQL Agentのサービスアカウントはローカルアドミニストレータ
    権限を持つドメインユーザーです。
    Publisherを作成した際に設定したプロキシアカウントと同一ユーザーです。

    試行錯誤の結果、SQLサーバーおよびSQL Agentのサービスアカウントを一旦別のドメインユーザー
    にして、distributionデータベースを作り直して削除後、再びサービスアカウントを元に戻して
    またレプリケーション設定し直したら、エラーが消えました。

    が、なぜこれで直ったのかはよく分かりません。

    質問①上記手順でなぜ復旧できたのでしょうか?
    質問②上記手順を実施した場合、データベースなどにゴミ情報が残りますか?
    質問③上記以外に最終的なユーザーを変えずに設定を完了する手順はあるでしょうか?

    以上、よろしくお願い致します。

    2009年10月29日 13:46