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 機能に関連するすべてのリソースが削除されました。