1

SQL Server 2008 の変更データ キャプチャ機能をテーブルでテストしていたときに、スタックが発生しました。

  • CDC が有効になっているテーブルは 1 つだけです。
  • CDC がどのように応答するかをテストするためにテーブルにさまざまな DDL 変更を行った後、テーブルを削除しました。
  • 以前のテストでは、テーブルを削除すると、CDC は CT テーブルと、削除されたテーブルに関連するメタ データも削除します。
  • CT テーブルがまだ存在し、そのレコードが cdc.change_tables テーブルに存在するため、最後の drop ステートメントは CDC によって検出されなかったようです。
  • cdc.change_table レコードが存在し、SQL Server メタ データ内の存在しないオブジェクト ID にリンクされているため、テーブルの CDC を無効にしたり、同じ名前で新しく作成されたテーブルの CDC を有効にしたりすることはできません。
  • データベースの CDC を無効にしようとしましたが、停止する前にコマンドが 1 時間実行され、応答がありませんでした。
  • データベースの CDC を無効にしようとしたときに、Management Studio で SQL Server エージェントのジョブ リストが応答しなくなりました (ロック要求のタイムアウト)。CDC の無効化コマンドをキャンセルした後も、エージェントは応答しませんでした。
  • Agent サービスを再起動してみました。正常に停止しましたが、起動中 (最終段階と思われるもの) にハングしました。サービスは現在、「開始中」ステータスのままになっています。

サーバーを再起動して、エージェントを再度実行しようとしています。

データベースはまだ開発中であり、データが含まれていないため、データベースを削除して再作成できますが、問題を修正する他の方法はありますか? これまでに読んだことはすべて、CDC リソースを直接いじってはならないことを示しています。cdc.change_tables レコードと関連する CT テーブルを削除してはいけない本当の理由はありますか?

システムの不安定性を示す CDC に関する同様の問題を経験した人はいますか?

編集: エージェントを再度実行した後、change_tables レコードと CT テーブルを手動で削除しようとしましたが、テーブルを有効にしようとすると、CDC メタデータに関連する一連のエラーが発生しました。ただし、データベース全体の CDC を正常に無効にしてから、再度有効にすることができました。もちろん、これにより、CDC 機能に関連するすべてのリソースが削除されました。

4

2 に答える 2

2

エージェントを再度実行した後 (サーバーの再起動)、change_tables レコードと CT テーブルを手動で削除しようとしましたが、テーブルを有効にしようとすると、CDC メタデータに関連する一連のエラーが発生しました。ただし、データベース全体の CDC を正常に無効にしてから、再度有効にすることができました。もちろん、これにより、CDC 機能に関連するすべてのリソースが削除されました。

テストのために実行していたすべての迅速な DDL の奇妙な動作を説明しています。これはテスト環境だったので、少なくともキャプチャしたデータをバックアップしない限り、本番環境では利用できないオプションがありました。

はい、CDCリソースを手動でいじる必要はありません。

于 2010-12-10T19:18:54.260 に答える
1

EXEC sys.sp_cdc_disable_dbsaが所有していないデータベースで実行しようとすると失敗することがわかりました。

(私はまだcdcテーブルをによって見ていますselect db_name() as dbname , p.rows,* from sys.objects o join sys.partitions p on o.object_id=p.object_id where o.schema_id=schema_id('cdc') and p.index_id < 2

Sys.sp_cdc_disable_db簡単にすぐに成功しますexec sp_changedbowner 'sa'

于 2012-09-11T15:10:47.657 に答える