【发布时间】:2016-09-14 18:04:50
【问题描述】:
我使用的是 MS SQL 2014。某些表已在其上启用了 CDC。 有一个问题:当我使用带有参数 'all' 的函数 fn_cdc_get_net_changes_.. 时 - 查询没有任何问题。 但是如果我使用参数'all update old'(获取更改前后的数据)我会得到错误:
为过程或函数 cdc.fn_cdc_get_net_changes_ ..." 提供的参数数量不足。
我阅读了很多资料,发现当 LSN 无效时会引发此类错误。 但在我的情况下并非如此!
select sys.fn_cdc_get_min_lsn('dbo_Lager03'), sys.fn_cdc_get_max_lsn()
-- 0x0016961C0002E34F0008 0x0016961C0002F8B90001
-- All OK
select * from cdc.[fn_cdc_get_net_changes_dbo_Lager03](sys.fn_cdc_get_min_lsn('dbo_Lager03'), sys.fn_cdc_get_max_lsn(), 'all')
-- table with rows
-- An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes_ ... .
select * from cdc.[fn_cdc_get_net_changes_dbo_Lager03](sys.fn_cdc_get_min_lsn('dbo_Lager03'), sys.fn_cdc_get_max_lsn(), 'all update old')
-- empty table and error message in 'Messages' window
如何使函数与参数'all update all'一起工作? 提前致谢!
【问题讨论】:
-
你完全正确!非常感谢!
-
正确的是 select * from cdc.[fn_cdc_get_all_changes_dbo_Lager03](sys.fn_cdc_get_min_lsn('dbo_Lager03'), sys.fn_cdc_get_max_lsn(), 'all update old')
标签: sql sql-server cdc