今天開啟數據庫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,執行成功。