トップ回答者
データベースコピーウィザードにて致命的な失敗

質問
-
とうよう と申します
標記の件につきまして、本番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)
回答
-
少し説明不足でした。
本環境が、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
すべての返信
-
少し説明不足でした。
本環境が、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
-
回答ありがとうございます。
Domain環境を記載せずすみませんでした。
DBサーバ、リモートマシン共にDomain環境にて運用しております。
DBへの接続はWindows認証でなく、SQLServer認証をしているのですが
SQL Server Agent経由の処理については強制的にWindows 認証での処理が行われるという認識でよろしいでしょうか?
リモート端末は複数のDomain Userが入る可能性がある為、都度SQL Server Agent のサービス起動アカウントを変えるか、Domain Usersグループに
するくらいしか考え付きません。
あまりSQL Server Agent のサービス起動アカウントをいじりたくないので、やはりDBサーバにリモートデスクトップで入り、
そこで作業をすることになりそうです・・・