开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC中sqlserver在热备情况下,开启cdc报错的问题 吗?

Flink CDC中sqlserver在热备情况下,开启cdc报错的问题 吗?消息 22830,级别 16,状态 1,过程 sp_cdc_enable_db_internal,行 193 [批起始行 16]
无法更新元数据来指示已对数据库 juxing 启用了变更数据捕获。执行命令 '(null)' 时失败。返回的错误为 3933: '无法将此事务提升为分布式事务,因为在此事务中有活动的保存点。'。请使用此操作和错误来确定失败的原因并重新提交请求。

展开
收起
cuicuicuic 2023-11-21 09:16:58 37 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    根据您的描述,这个错误消息是在尝试启用 SQL Server 中的 CDC 功能时出现的,这种情况通常发生在试图在一个已经存在保存点的事务中启动 CDC 时。
    要解决这个问题,请首先尝试删除所有保存点。您可以通过使用以下 T-SQL 语句来完成这个操作:

    ROLLBACK TRANSACTION;
    GO
    
    DBCC OPENTRAN;
    

    然后再次尝试启用 CDC 功能,看看是否解决了问题。
    另外,您可以尝试重新创建数据库快照(SS),然后再尝试启用 CDC。请确保 SS 创建成功,并且所有相关的活动都被成功关闭,然后再继续下一步操作。

    2023-11-21 23:10:15
    赞同 1 展开评论 打赏
  • 这个问题是由于在热备情况下,SQL Server 无法将事务提升为分布式事务。要解决这个问题,可以尝试以下方法:

    1. 确保 SQL Server 的恢复模型设置为简单或完全。可以通过以下命令查看和设置恢复模型:
    -- 查看恢复模型
    RESTORE FILELISTONLY FROM DISK = '你的备份设备' WITH NORECOVERY;
    
    -- 设置恢复模型
    ALTER DATABASE juxing SET RECOVERY SIMPLE;
    
    1. 检查是否有活动的保存点。如果有活动的保存点,需要先删除它们,然后再尝试启用 CDC。可以使用以下命令查看保存点:
    -- 查看保存点
    SELECT * FROM sys.dm_tran_active_snapshots;
    
    -- 删除保存点
    USE juxing;
    GO
    DBCC SHRINKFILE (你的文件名, TRUNCATEONLY);
    GO
    
    1. 如果问题仍然存在,可以尝试重启 SQL Server 服务。
    2023-11-21 14:55:35
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载