none
データベースコピーウィザードにて致命的な失敗 RRS feed

  • 質問

  • とうよう と申します

    標記の件につきまして、本番DBを定期的にテスト用にコピーしたいと思っております。

    そこで、データベースコピーウィザードにて同じサーバー内の別インスタンスへDBをコピーしようとしたところ
    コピーウィザードのパッケージ作成のタスクで致命的なエラーと出て処理できませんでした
    詳細ログを見ても致命的なエラーとだけ表示されているので、原因がまったくわかりません
    何かわかる方がいらっしゃればご教授いただけますでしょうか。

    環境
    Windows Server 2008
    SQL Server 2008
    本番DBとコピー先のDBは同じマシン内の別インスタンスです

    詳細ログ
    ===================================

    致命的なエラーです。
     (データベース コピー ウィザード)

    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Dts.Runtime.Application.SaveToSqlServerAs(Package package, IDTSEvents events, String packagePath, String serverName, String serverUserName, String serverPassword)
       場所 Microsoft.SqlServer.Management.CopyDatabaseWizard.PackageCreator.SavePackage()

    ===================================

    致命的なエラーです。


    ------------------------------
    プログラムの場所:

       場所 Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass.SaveToSQLServerAs(IDTSPackage100 pPackage, IDTSEvents100 pEvents, String bstrPackagePath, String bstrServerName, String bstrServerUserName, String bstrServerPassword)
       場所 Microsoft.SqlServer.Dts.Runtime.Application.SaveToSqlServerAs(Package package, IDTSEvents events, String packagePath, String serverName, String serverUserName, String serverPassword)


    2009年5月18日 5:04

回答

  • 少し説明不足でした。

    本環境が、non-domain 環境でかつ、Windows 認証 にて、SQL Server へ接続していると仮定します。

    Local System を、SQL Server Agent のサービス起動アカウントに指定している場合、パススルー認証にて認証を行う必要がございます。
    つまり、SQL Server がインストールされているマシン上の管理者ユーザーのパスワードと、リモートサーバー上の管理者ユーザーのパスワードが一致している必要がございます。
    パススルー認証は、一般ユーザーにでも使用できます。

    本環境で言えば、以下の手順を実施することにより、リモートからデータベースコピー処理を実施できるのでは無いかと考えています。

    +DBサーバー
    1) 新規ユーザー (例 SQLTEST、パスワード: sqltest) を作成し、Local Administrators グループに所蔵します。
    2) SQL Server Agent のサービス起動アカウントに、上記のユーザー(SQLTEST) を指定し、サービスの再起動を実施します。

    +リモートサーバー
    3) 1) と同じ、ユーザー名、パスワードにて新規ユーザーを作成し、Local Administrators グループに所蔵します。
    4) 一旦 OS からログオフし、新規ユーザにてOSにログインします。
    5) SQL Server Manament Studio より、Windows 認証にてインスタンスに接続し、データベース コピー処理を実施します。

    ※ドメイン環境の場合は、SQL Server Agent のサービス起動アカウントに、ドメインユーザーを指定することにより、上記のことを、より簡単に設定ができます。
    例えば、SQL Server Agent のサービス起動アカウントに、Domain Admin グループに所属しているユーザーを指定、リモートサーバーへは、Domain Admin グループに所属しているユーザーにてログイン。(これはあくまで一例ですが)

    • 回答としてマーク toyotoyo 2009年5月20日 0:21
    2009年5月19日 7:14
  • 色々記載してしまいましたが、回避策が明確であり、特に必ずリモートサーバー上から本処理を実施出来なければならないという要件が無いのであれば、今の環境のままご使用されたほうが、よろしいかと思います。
    • 回答としてマーク toyotoyo 2009年5月20日 0:22
    2009年5月19日 8:08

すべての返信

  • 追加情報です
    その後、DBサーバ上のManagement Studioを使用して同様の操作を行ったところ、あっさり成功しました・・・

    ただ、別マシンよりManagement Studioでリモート接続して行おうとすると、やはりエラーになりました、
    マシン固有の問題でしょうか・・・
    2009年5月18日 6:17
  • リモート先のマシンから SQL Server Agentに指定している サービス起動アカウント 対する認証に失敗しているのではないでしょうか。 (ローカル ユーザーに指定しているなど)

    2009年5月19日 4:48
  • NOBTA さま
    回答ありがとうございます。

    構成マネージャで見たところ SQL Server AgentはログオンがLocalSystemになっていたので、ためしにNetwork Service
    に変更して試してみましたが、同様の結果でした・・・

    さしあたってはDBサーバにて稼働させればよさそうなので、当面はこれでいこうと思います。

    別途確認するべきところなどあればご教授いただければと思います。

    ありがとうございました
    2009年5月19日 4:59
  • 少し説明不足でした。

    本環境が、non-domain 環境でかつ、Windows 認証 にて、SQL Server へ接続していると仮定します。

    Local System を、SQL Server Agent のサービス起動アカウントに指定している場合、パススルー認証にて認証を行う必要がございます。
    つまり、SQL Server がインストールされているマシン上の管理者ユーザーのパスワードと、リモートサーバー上の管理者ユーザーのパスワードが一致している必要がございます。
    パススルー認証は、一般ユーザーにでも使用できます。

    本環境で言えば、以下の手順を実施することにより、リモートからデータベースコピー処理を実施できるのでは無いかと考えています。

    +DBサーバー
    1) 新規ユーザー (例 SQLTEST、パスワード: sqltest) を作成し、Local Administrators グループに所蔵します。
    2) SQL Server Agent のサービス起動アカウントに、上記のユーザー(SQLTEST) を指定し、サービスの再起動を実施します。

    +リモートサーバー
    3) 1) と同じ、ユーザー名、パスワードにて新規ユーザーを作成し、Local Administrators グループに所蔵します。
    4) 一旦 OS からログオフし、新規ユーザにてOSにログインします。
    5) SQL Server Manament Studio より、Windows 認証にてインスタンスに接続し、データベース コピー処理を実施します。

    ※ドメイン環境の場合は、SQL Server Agent のサービス起動アカウントに、ドメインユーザーを指定することにより、上記のことを、より簡単に設定ができます。
    例えば、SQL Server Agent のサービス起動アカウントに、Domain Admin グループに所属しているユーザーを指定、リモートサーバーへは、Domain Admin グループに所属しているユーザーにてログイン。(これはあくまで一例ですが)

    • 回答としてマーク toyotoyo 2009年5月20日 0:21
    2009年5月19日 7:14
  • 回答ありがとうございます。

    Domain環境を記載せずすみませんでした。

    DBサーバ、リモートマシン共にDomain環境にて運用しております。
    DBへの接続はWindows認証でなく、SQLServer認証をしているのですが
    SQL Server Agent経由の処理については強制的にWindows 認証での処理が行われるという認識でよろしいでしょうか?

    リモート端末は複数のDomain Userが入る可能性がある為、都度SQL Server Agent のサービス起動アカウントを変えるか、Domain Usersグループに
    するくらいしか考え付きません。

    あまりSQL Server Agent のサービス起動アカウントをいじりたくないので、やはりDBサーバにリモートデスクトップで入り、
    そこで作業をすることになりそうです・・・
    2009年5月19日 7:23
  • 色々記載してしまいましたが、回避策が明確であり、特に必ずリモートサーバー上から本処理を実施出来なければならないという要件が無いのであれば、今の環境のままご使用されたほうが、よろしいかと思います。
    • 回答としてマーク toyotoyo 2009年5月20日 0:22
    2009年5月19日 8:08