SQL Server 2014 предлагает wait_at_low_priority, чтобы вы могли убивать блокировщики. Однако он не работает с ALTER PARTITION FUNCTION, что вызывает проблемы (невозможно добавить будущие разделы, если запрос имеет блокировку схемы).
Каков рекомендуемый способ его реализации?
Это не будет работать:
ALTER PARTITION FUNCTION pf_mytable() SPLIT RANGE ('20200214')
WITH (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = BLOCKERS));
Глядя на мой код (у меня есть Add-new-section и drop-old-partition как отдельные задания), код для удаления старых разделов делает SWITCH / TRUNCATE /MERGE.
ALTER TABLE mytable SWITCH PARTITION 2 TO mytable_aux PARTITION 2 ;
TRUNCATE TABLE mytable_aux
ALTER PARTITION FUNCTION pf_mytable() MERGE RANGE (@Day_REQ) ;
Есть ли какой-то шаблон или лучшая практика, которая рекомендуется? Я думал только о том, чтобы запустить задание DROP OLD PARTITION (с новым WAIT_AT_LOW_PRIORITY для уничтожения блокировщиков) перед заданием ADD NEW PARTITION или изменить код ADD NEW PARTITION, чтобы выполнить «фальшивый» обмен на будущих разделах.