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回目の試行で成功しました。
助けてください。
そのウィザードをいじるよりもはるかに効率的な方法は次のとおりです。
ALTER DATABASE
を使用して、互換性レベルを80を超える値(2005または2008/2008 R2を使用したかどうかに応じて90または100)に変更します。