Сбой переключателя ALTER при включении cdc

#sql-server #cdc #sql-server-2019

#sql-server #cdc #sql-server-2019

Вопрос:

У меня SQL server 2019 CU8. CDC включен для базы данных. Странно, но этот запрос завершается с ошибкой

 ALTER TABLE tblTemp
SWITCH PARTITION $partition.dateRangepfDay(@datefor) TO tblM PARTITION $partition.dateRangepfDay(@datefor)
 

ошибка

 The transaction ended in the trigger. The batch has been aborted. [SQLSTATE 42000] (Error 50000)
 

Небольшое расследование было направлено на создание нового триггера базы данных DB (который был создан после CDC) tr_MScdc_ddl_event

Каким-то образом я знаю, что запрос работает:

 ALTER TABLE tblTemp
SWITCH PARTITION $partition.dateRangepfDay('2020-12-16') TO tblM PARTITION $partition.dateRangepfDay('2020-12-16')
 

(переключить переменную на текстовое значение)

Кто-нибудь знает, почему это происходит и почему поведение отличается?

Комментарии:

1. Нет, но интересно, что он работает со статическими значениями! Есть ли какая-либо подсказка в теле триггера, о котором вы упоминаете?

2. ну, tr_MScdc_ddl_event вызовы sys.sp_MScdc_ddl_event , которые вызывают sys.sp_cdc_ddl_event_internal . Вот и все (