我正在测试一张表上的 SQL Server 2008 变更数据捕获功能,当时它卡住了。
- CDC 只启用了一个表。
- 在对表执行各种 DDL 更改以测试 CDC 如何响应后,我删除了表。
- 之前在我的测试中,删除表还会导致 CDC 删除 CT 表以及与已删除表相关的任何元数据。
- CDC 似乎从未检测到最后一个 drop 语句,因为 CT 表仍然存在,并且 cdc.change_tables 表中存在一条记录
- 我无法为表禁用 CDC,或为新创建的同名表启用 CDC,因为 cdc.change_table 记录存在并且链接到 SQL Server 元数据中不存在的对象 ID。
- 我尝试为数据库禁用 CDC,但该命令运行了 1 小时而没有响应,然后才停止它。
- 在尝试为数据库禁用 CDC 时,SQL Server 代理的作业列表在管理工作室中变得无响应(锁定请求超时)。取消禁用 CDC 命令后,代理仍无响应。
- 我尝试重新启动代理服务。它成功停止但在启动期间(似乎是最后阶段)挂起。该服务现在停留在“正在启动”状态。
我正在重新启动服务器以尝试让代理再次运行。
我可以删除并重新创建我的数据库,因为它仍在开发中并且其中没有任何数据,但是还有其他方法可以解决问题吗?到目前为止,我所阅读的所有内容都表明我不应该直接使用任何 CDC 资源。有什么真正的理由我不应该只删除 cdc.change_tables 记录和相关的 CT 表吗?
有没有人遇到过类似的 CDC 问题,表明系统不稳定?
编辑:让代理再次运行后,我尝试手动删除 change_tables 记录和 CT 表,但是当我尝试启用该表时,出现了一系列与 CDC 元数据相关的错误。但是,我能够成功禁用整个数据库的 CDC,然后重新启用它。这当然会删除与 CDC 功能相关的所有资源。