【问题标题】:Is there a way to use SQL Server 2019 and CDC (Change Data Capture) at the same time?有没有办法同时使用 SQL Server 2019 和 CDC(变更数据捕获)?
【发布时间】:2020-02-16 16:19:59
【问题描述】:

我正在做一个项目,我必须使用 CDC、目录排序规则 SQL_Latin1_General_CP1_CI_AS 和数据的 CS 排序规则。为任何表启用 cdc 时,我从 sp_cdc_create_populate_stored_procs 收到排序规则冲突错误。这是从其他过程“sys.sp_cdc_enable_table_internal”调用的,这也是从我自己的 sql 脚本“sys.sp_cdc_enable_table”调用的。对我来说,这似乎是一个错误,但如果有任何新想法如何在此问题上实施生产级解决方法,我将不胜感激。

【问题讨论】:

  • 嗨!您能否向我们展示您已经尝试过的查询以及您遇到的错误代码?
  • 当然。消息:消息 22832,级别 16,状态 1,过程 sys.sp_cdc_enable_table_internal,第 673 行 [批处理开始第 7 行]无法更新指示表 [schema].[database] 已启用更改数据捕获的元数据。执行命令“sp_cdc_create_populate_stored_procs”时发生故障。返回的错误是 468:“无法解决等于操作中“SQL_Latin1_General_CP1_CS_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。使用操作和错误来确定失败的原因并重新提交请求。明天将发送更多。

标签: sql-server collation change-data-capture sql-server-2019


【解决方案1】:

这是包含数据库的记录限制。

限制

部分包含的数据库不允许以下内容 功能。

-部分包含的数据库不能使用复制,更改数据 捕获或更改跟踪。

-编号程序

-依赖于带有排序规则的内置函数的模式绑定对象 变化

-由排序规则更改导致的绑定更改,包括引用 到对象、列、符号或类型。

-复制、更改数据捕获和更改跟踪。

Contained Databases - Limitations

如果您需要不区分大小写的目录排序规则以及区分大小写的数据排序规则,您可以直接在文本列上设置列排序规则,而不是使用数据库的默认排序规则。

【讨论】:

  • 谢谢大卫,我没有使用包含的数据库。除非使用 WITH CATALOG_COLLATION 以某种方式使其成为一体。它在包含模式设置为 False 的 prem SQL Server 上。我知道包含的数据库有这个限制,但我无法在任何地方找到 WITH CATALOG_COLLATION 选项的实际文档。您可以发送任何文档吗?
  • 包含数据库是在本地获取目录整理的唯一方法。 Azure SQL 数据库具有适用于所有数据库的标准目录排序规则。
  • 好的,你对包含数据库的看法对我来说是个新闻。由于缺乏 CDC,我之前特别决定不使用包含的数据库。现在我发现自己已经开始使用它了。如果我正在处理的系统相对较大,添加列级 CS 排序规则会影响性能吗?或者是否有任何其他可能的已知风险/陷阱广泛使用列级排序规则?可能最好的实现方法是对每个 varchar/char 列使用游标..
  • 不需要使用游标。最大的风险是实例排序规则和列排序规则之间的不匹配,这可能会带来不便或令人惊讶,您需要注意。
  • 谢谢大卫!会试一试,希望我能让 CDC 再次工作。真的很感激有关 WITH CATALOG_COLLATION 的更详尽的文档 - docs.microsoft.com 似乎仍然缺少
猜你喜欢
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
相关资源
最近更新 更多