由于我无法更改的原因,有一个公司范围的策略阻止SQL Server上的SQL代理作业。我们有一个使用CDC的应用程序,我们希望使用此功能。
DBA建议使用经批准用于计划作业的企业计划应用程序。这看起来非常简单,因为看起来实际上只有3个步骤可以让CDC运行。唯一的另一个变量是调度作业的服务帐户没有对我们的sql服务器的dbo或sys admin访问权限。解决方法是我使用execute as OWNER执行CDC步骤。我遇到的是sys.sp_mscdc_capture_job过程似乎只是运行并且永远不会完成。
我检查了sys.dm_cdc_log_scan_sessions视图,看到2行 -
session_id start_time end_time duration scan_phase error_count start_lsn current_lsn end_lsn tran_count last_commit_lsn last_commit_time log_record_count schema_change_count command_count first_begin_cdc_lsn last_commit_cdc_lsn last_commit_cdc_time latency empty_scan_count failed_sessions_count
1 2017-06-06 18:22:27.660 2017-06-07 13:45:50.943 2完成1 00000000:00000000:0000 00000000:00000000:0000 00000000:00000000:0000 0 00000000:00000000:0000 1900- 01-01 00:00:00.000 0 0 0 00000000:00000000:0000 00000000:00000000:0000 1900-01-01 00:00:00.000 0 2443 0 - 列出项目
我在CDC表中看不到任何数据。这里有什么我想念的吗?这是捕获作业sql:
create procedure CDCWrappedExecute with Execute as OWNER
as
RAISERROR(22801, 10, -1)
exec sys.sp_MScdc_capture_job