首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为过程或函数cdc.fn_cdc_get_all_changes_提供的参数数量不足

为过程或函数cdc.fn_cdc_get_all_changes_提供的参数数量不足
EN

Stack Overflow用户
提问于 2013-04-30 20:02:10
回答 4查看 34.9K关注 0票数 18

用于查询表Fields中最新跟踪更改的看似有效的代码

代码语言:javascript
运行
复制
DECLARE @Begin_LSN BINARY(10), @End_LSN BINARY(10)
SET @Begin_LSN = sys.fn_cdc_get_min_lsn('Fields')
SET @End_LSN = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_ordering_Fields (@Begin_LSN, @End_LSN, N'all')
GO

生成以下错误消息:

代码语言:javascript
运行
复制
Msg 313, Level 16, State 3, Line 5
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes_ ... .

但是,如果我检查实际值,它们似乎都是有效的(不是null),则查询

代码语言:javascript
运行
复制
SELECT @Begin_LSN, @End_LSN, N'all';

返回

代码语言:javascript
运行
复制
0x00000000000000000000  0x00002594000002130001  all
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-30 20:02:10

这个错误消息有点误导性,基本上暗示了some parameters might be out of bound。该消息不是进一步定制的表函数的because of the limitation

零值(0x00000000000000000000)不是有效的值。如果找不到适当的capture实例名称,则sys.fn_cdc_get_min_lsn()将返回此值。此名称可能与实际的表名不同。有关更多详细信息,请参阅此问题

有关更多详细信息,请参阅the following question

票数 35
EN

Stack Overflow用户

发布于 2018-11-21 14:50:10

在我的例子中,这个错误是因为多次在表级启用/禁用CDC,并为同一个表创建了两个捕获实例。我通过在数据库级别禁用CDC并再次启用来修复这个问题,然后它就可以正常工作了。

票数 1
EN

Stack Overflow用户

发布于 2019-11-26 22:28:42

上面的答案是正确的,但我想我应该加上我的例子中的答案。我正在保存最后处理的LSN以备将来运行。但这是一个dev数据库,它是从prod恢复的。CDC脚本被重新应用,但我丢失了我的历史记录。我需要做的就是删除最后处理的LSN,这样它就可以返回到获取捕获实例的最小LSN,从而使我回到正确的轨道上来。不幸的是,这不是一个非常有用的错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16299422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档