web-dev-qa-db-ja.com

データベースコピーウィザードの使用中にタイムアウトが発生したエラー

Microsoftは、SQL Server 2012データベースのコピーWizardは、SQL Server 2000データベースをSQL Server 2012にコピーする最も最適な方法であると信じさせました。数時間苦労した後、問題が発生し、小規模から中規模のSQL Server 2000データベースをSQL Server 2012にインポートできました。

ただし、30GBデータベースの場合、ウィザードは次のエラーで常に失敗します。

メッセージ:データの転送中にエラーが発生しました。詳細については、内部の例外を参照してください。
StackTrace:Microsoft.SqlServer.Management.Smo.Transfer.TransferData()で
at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()
InnerException->タイムアウトが発生しました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。
CREATE DATABASEが失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。
スタックトレース:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception、Boolean breakConnection)
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()で
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj)

私は再確認しましたが、ファイルパス、権限、ディスク容量の問題ではありません。私は思います CREATE DATABASEステップには2分ほどかかり、ウィザードは操作がタイムアウトしたと想定します。 SQLを使用して同じファイルパスとファイルサイズで空のデータベースを手動で作成しましたが、うまくいきました。興味深いことに、1GBのデータベースコピーは同じエラーで失敗し、2回目の試行で成功しました。

助けてください。

8
Salman A

そのウィザードをいじるよりもはるかに効率的な方法は次のとおりです。

  1. 2000データベースの完全バックアップを取ります。
  2. それをSQL 2005、2008、または2008 R2インスタンスに復元します。これらすべてが2000データベースをサポートします。該当するインスタンスがない場合でも、 2008 R2の評価版はこちら を取得できます。 Expressは、バージョンによっては4GB/10GBのデータファイル制限があるため、機能しないことに注意してください。
  3. ALTER DATABASEを使用して、互換性レベルを80を超える値(2005または2008/2008 R2を使用したかどうかに応じて90または100)に変更します。
  4. このデータベースが80互換モードでなくなったら、このデータベースの完全バックアップを作成します。
  5. この新しいバックアップをSQL Server 2012インスタンスに復元します。
  6. 互換性レベルを110に変更し、統計を更新します。
  7. [〜#〜]テスト[〜#〜]
7
Aaron Bertrand