web-dev-qa-db-ja.com

データベースSQL Server 2012のコピー中に「ジョブが失敗しました」

データベースをコピーしようとしています。データベースコピーウィザードを実行すると、SQL Serverエージェントジョブの実行エラーが発生します。エラー状態

ジョブは失敗しました。詳細については、移行先サーバーのイベントログを確認してください

操作を実行する

  • パッケージのログを追加(成功)

  • データベースオブジェクトを転送するためのタスクを追加(成功)

  • パッケージの作成(成功)

  • SQL Serverエージェントジョブの開始(成功)

  • SQL Serverエージェントジョブの実行(エラー)

エラー:

ジョブは失敗しました。詳細については、移行先サーバーのイベントログを確認してください。 (データベースのコピーウィザード)

この問題の原因を見つけることができないようです。正しいアプローチを使用していますか?このデータベースをコピーするだけです。前もって感謝します。

19
mohammad_hasan

同じサーバー上でデータベースを複製しようとしている場合、これを試してください:

  1. コピーするデータベースのバックアップを作成します
  2. Databasesを右クリックし、Restore Databaseを選択します
  3. From DatabaseセクションのSource for restoreドロップダウンリストからコピーするデータベースを選択します
  4. To databaseセクションのDestination for Restoreフィールドに新しいデータベースの名前を入力します-これは既存のデータベースの名前にはできません。
  5. OKをクリック
17
safi

Windowsイベントログを確認します。

  1. イベントビューアー
  2. Windowsログ
  3. 応用
  4. 次のいずれかに関連する警告/エラーメッセージを探します。
    • SQLAgent
    • SQLISPackage
  5. エラーを読んでください。

以下に例を示します。

SQLAgent Related Errror

以下に、発生したエラーと解決策の一部を示します。

ジョブ...の所有者(...)にサーバーアクセスがあるかどうかを判断できません(理由:Windows NTグループ/ユーザー '...'の情報を取得できませんでした、エラーコード0x54b。[SQLSTATE 42000](エラー15404) )。

データベースのコピーウィザード中に、移行先サーバーにサインインしたアカウントに適切な特権があり、それらの特権が取得可能であることを確認する必要がありました(最終的にsaアカウントを使用しました)。上記の警告。

アクセスが拒否されました

ローカルSQL Serverエージェントがローカルサーバーに対して適切な特権を持っていることを確認する必要がありました。そのため、SQL Serverエージェントをローカルシステムとしてログオンしました。これは、ローカルシステムがSQL Serverインスタンスのsysadminであるため機能しました。

おそらく不十分なアクセス権が原因で、メタデータを読み取れませんでした。

ローカルシステムアカウントにさらに権限を与える必要がありました。

  • SSMSから
  • サーバー名を右クリックし、プロパティをクリックします
  • [権限]タブをクリックします
  • ユーザーLocal Systemをクリックします
  • ほぼ最下部の明示的許可には、「すべての定義を表示」という許可があります。それが機能するかどうかを確認します。

xp_regread()はエラー5、「アクセスが拒否されました」を返しました。

これは私たちを悩ませ、別の質問をしました: xp_regread()はエラー5、「アクセスは拒否されました。」

9
Shaun Luttin

通常、アカウント(NT Service\SQLSERVERAGENT)にはデータフォルダー(..Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA)に対するアクセス許可がないためです。フルコントロールに設定しても大丈夫

上記のアカウントはデフォルトです。エージェントを実行しているアカウントを確認する場合は、services.mscにアクセスしてください。アカウントのログオンを確認する

8
Grey Wolf

データベースコピーウィザードの問題:エラー:値をnullにすることはできません。パラメーター名:データベースStackTrace:at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.CheckLocalandDestinationStatus

データベースのコピーウィザードをSQL 2012からSQL2017 1のスケジュールで動作させるためにすべてを試しました。sysadmin2のプロキシを既に設定していても、SQLエージェントアカウントを管理者に設定していました。私はデータツールに行き、最大エラーを複数に変更しようとしました。

A. 2017年のサーバーにデータツールをインストールしました(必要な場合に備えて)B. 2017年のサーバーにダミーデータベースを追加して、データベースのコピーウィザードにアクセスできるようにしましたSSMS内。 C.ダミーデータベースからNEWERシステムからopyデータベースウィザードを起動しましたが、ソースを(ローカルSQLインスタンスのデフォルトではなく)ソースサーバーに変更し、それぞれターゲットをローカルマシンSQLインスタンスに変更しました。

D.各アイテムのウィザードを実行しました(私の場合は、SSMSを使用したコピーアンドリプレースオプションでした(プロダクションでソースをダウンできなかったため、デタッチおよび再アタッチしません)。宛先ディレクトリを変更した後の各データベースコピーウィザード画面。

(SQL 2017のSSMS 2017でデータベースを移行する場合は1つのキャビア。SQLバージョンの最新の累積更新があることを確認してください。 https://support.Microsoft.com/en-us/help/434212 vs.クエリで@@ versionを選択

また、SQLエージェントとSQLサーバーアカウントにターゲットディレクトリへのアクセス許可があることを確認してください)

その後、私のスクリプトは最終的にSQL2017サーバーから実行され、SQLエージェントジョブに追加されました。

1
Chip

私にとっては、dbをローカルホストにコピーしていました。

  1. エージェントサービスを自分で実行するように変更しました。
  2. イベントログに「サーバーロール 'Developer'が存在しないか、権限がないため変更できない」と記載されているため、localhostに欠落しているロールが追加されました。
  3. 「InnerException->プロシージャ 'sys.sp_procoption'をトランザクション内で実行することはできません。」そのため、ストアドプロシージャをコピーしないようにウィザードの設定を変更しました。
  4. 次のエラーは、「プロパティHasMemoryOptimizedObjectsはデータベース '[TCCPortal_UAT]'に使用できません。このプロパティはこのオブジェクトには存在しないか、アクセス権が不十分なため取得できない可能性があります」です。

その時点で、私はSQL Serverのインポートおよびエクスポートウィザードをあきらめ、使用しましたが、これは必要なものに対してはうまくいくように見えました。 https://docs.Microsoft.com/en-us/sql/integration-services/import-export-data/import-and-export-data-with-the-sql-server-import-and- export-wizard?view = sql-server-2017

インポートおよびエクスポートウィザードを使用すると、テーブルでうまく機能することに注意してください。データベースを右クリック->タスク->スクリプトを生成して、ビュー、ストアドプロシージャ、および関数を個別にコピーする必要がありました。その後、ウィザードで選択可能なオブジェクトを確認します。

幸運を祈ります。これが誰かの助けになることを願っています。

1
James Burnett