sql server 开启cdc报事务正在执行

今天开启数据库cdc 功能的时候提示:一个dbrole 的存储过程,rolemember  cdc  db_ower,

,有事务正在进行,执行失败。

执行多次仍然如此,开启cdc的存储过程是sys.sp_cdc_enable_db;查询了一下网络,给出的方法1.是手动增加cdc用户到db_ower,但是查看官方文档,在开启cdc之前,cdc用户是不允许存在的,

然后使用sql语句


SELECT 
    request_session_id AS SessionID,
    resource_type,
    request_mode AS LockType,   
    request_status, count(1) cn 
FROM sys.dm_tran_locks
group by   request_session_id  ,
    resource_type,
    request_mode  , 
    request_status
order by cn desc 


SELECT 
    request_session_id AS SessionID,
    resource_type,
    request_mode AS LockType,
    resource_description,
    request_status
FROM sys.dm_tran_locks

网上给出的方法2是.是优化sql语句,减少锁。

查询有很多锁,但是一些ix,s ,object一些数据锁应该不会影响开启啊,怀疑是MEATADATA的锁导致的不能开启cdc,是有很多meata锁的,查询对应的session_id正在执行什么。

当meate锁很少的时候,再次执行开启sys.sp_cdc_enable_db,执行成功。

你可能感兴趣的:(sql,server,数据库,sqlserver)