SQL 2008R2ボックスでSQL2000ユーザーデータベースを復元していますが、次のエラーが表示されることがあります。これはSQLログです。
2010年11月22日09:32:00| SPID61 | データベース「DB_OPP_P_2」を起動しています。
2010年11月22日09:32:00| SPID61 | データベース'DB_OPP_P_2'はRESTORINGとマークされており、リカバリを実行できない状態になっています。
2010年11月22日09:32:33| SPID61 | データベース「DB_OPP_P_2」を起動しています。
2010年11月22日09:32:33| SPID61 | リカバリは、データベース'DB_OPP_P_2'(51)にチェックポイントを書き込んでいます。これは情報メッセージです。ユーザーの操作は必要ありません。
2010年11月22日09:32:36| SPID61 | エラー:928、重大度:20、状態:1。
2010年11月22日09:32:36| SPID61 | アップグレード中に、データベースで例外156、重大度25、状態1、アドレス0000000002225A9Fが発生しました。例外番号を使用して原因を判別してください。
アップグレードフェーズ中に例外が発生したことを示しているので、復元率が100%に達した後に発生したと思います。
この復元のスクリプト再試行を実装しましたが、5回すべて失敗しました。ただし、同じ復元スクリプトを使用して手動で再試行すると、復元は完了します。ソースでDBCCCHECKDBを実行しましたが、エラーは返されませんでした。
データベースの互換性レベルは80(sql 2000)で、バージョンは539です。
問題のあるデータベースでUpgradeAdvisorを実行しているときに、古い外部結合sintax * =、=*を持つ27個のオブジェクトが表示されます。
残念ながら、これが原因であるかどうかを確認するためにプロシージャを変更することはできません。もう1つの可能性は、拡張子を区切るBEGINとENDを持たないprocがたくさんあることです。それらをバッチで作成すると、SQLが混乱します。
アップデート:
- SQL2000ボックスでデータベースを正常に復元しました。
- また、ジョブに再試行動作を実装しましたが、5回すべて失敗しました。
再試行動作は失敗しました。しかし、奇妙なことに、同じ復元スクリプトで再試行すると、復元を試みたジョブは成功します。
更新2: SQL2008r2への移行時にデータベースを手動で復元しました。したがって、この問題は修正されておらず、修正されません。SQL2008r2ではこれは発生しません。ご協力いただきありがとうございます。