#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
. Вот и все (