Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为过程或函数cdc.fn\u cdc\u get\u all\u changes提供的参数数量不足__Sql Server_Sql Server 2008_Cdc - Fatal编程技术网

Sql server 为过程或函数cdc.fn\u cdc\u get\u all\u changes提供的参数数量不足_

Sql server 为过程或函数cdc.fn\u cdc\u get\u all\u changes提供的参数数量不足_,sql-server,sql-server-2008,cdc,Sql Server,Sql Server 2008,Cdc,用于查询表字段中最新跟踪更改的看似有效的代码: 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

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

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
生成以下错误消息:

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_ ... .
但是,如果我检查实际值,它们似乎都是有效的(不是空的),查询

SELECT @Begin_LSN, @End_LSN, N'all';
返回

0x00000000000000000000  0x00002594000002130001  all

这个错误消息有点误导人,基本上暗示了这一点。该消息没有进一步自定义表函数

零值(
0x00000000000000
)无效。
sys.fn\u cdc\u get\u min\u lsn()
如果找不到合适的捕获实例名称,则返回此值。此名称可能与实际表名不同。有关更多详细信息,请参见此问题


有关更多详细信息,请参阅。

我遇到了与您类似的问题。我的问题比你的问题简单,但我想在这里写一篇关于某人收到类似错误代码的文章

当我调用一个有参数的函数时,我忘了输入那些参数。在windowsform数据集中,我必须使用类似于
Select*from func\u的东西(@id,@name)
。但是,如果我在数据集上使用
Select*from func\u for\u something()
编写,而不使用参数,那么在VisualStudio中,我没有任何尝试。然而,当我在程序中的某个地方触发此函数时,我看到一条类似于您的错误消息

因此,总结一下:当您使用具有参数的函数时,不要忘记添加参数。:)
很抱歉,我的英语不太流利。在我的例子中,此错误是由于多次在表级别启用/禁用CDC,并为同一个表创建了两个捕获实例。我通过在数据库级别禁用CDC并再次启用来修复此问题,然后它工作正常。

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

当提供的@Begin_Lsn值不在变更表中时,也可能发生这种情况。在我的情况下,Lsn是有效的。仍然从[cdc]获取此错误
select*。[fn\u cdc\u get\u net\u changes\u CM\u Attachments](null,null,'all')
没有lsn也会触发相同的错误