0

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ではこれは発生しません。ご協力いただきありがとうございます。

4

2 に答える 2

1

SQL Server 2000 のデータベースの互換性を確認してください。それらは 65 ですか?

エラー 156 は基本的に間違った構文であり、通常は互換性の不一致が原因です。「65」は SQL Server 2008 ではサポートされていません

バックアップ/復元の前にアップグレード アドバイザを試しましたか?

編集:

外部結合。うーん

SQL Server 2005 では廃止されましたが、SQL Server 2008 では非推奨になっていることに気付きました。私の推測では、アップグレード アドバイザと MSDN が何を言おうと、 *0and構文が問題を引き起こしていると思います。0*個人的には、6.5 から SQL Server 7 に移行して以来、使用していません...

于 2010-09-27T21:15:42.710 に答える
0

SQL 2008 r2 への移行時にデータベースを手動で復元しました。

SQL 2008 r2に移行したため、この問題は修正されておらず、今後も修正されません。

ご助力ありがとうございます。

于 2011-02-16T13:46:26.377 に答える