Инструменты данных SQL Server и функции секционирования

16

Я создаю сценарий загрузки скользящего окна, и функции разделов будут со временем менять свои границы.

Я создал некоторые функции секционирования в моем проекте базы данных SQL Server Data Tools (SSDT) ​​с жестко заданными начальными границами.

Однако с течением времени и изменением границ функций раздела будущие публикации базы данных SSDT вернут границы к исходным.

Есть ли способ изящно обработать этот сценарий, возможно, отключив публикацию функций раздела?

Я попытался изменить свойство Build Action функций раздела в SSDT со значения по умолчанию Buildна None, но затем проект не удается построить из-за отсутствия ссылки в зависимых объектах.

gonsalu
источник
4
Я всегда говорил, что развертывание на основе различий в корне нарушено. Миграция - такая метафора развертывания !
Ремус Русану
В «Игнорировать параметры индекса» должны быть установлены также , чтобы избежать SSDT восстановления многораздельным индексировать каждый раз , когда развертывание срабатывает.

Ответы:

16

Я смог найти решение своей проблемы - надеюсь, это поможет кому-то еще.

Чтобы избежать каждой публикации базы данных, воссоздающей функцию раздела, вы можете выбрать опцию Игнорировать схемы разделов в диалоговом окне « Дополнительные параметры публикации » ( кнопка « Дополнительно ...» в диалоговом окне «Публикация базы данных»).

Из описания варианта (выделение мое):

Указывает, следует ли игнорировать или обновлять различия в схемах и функциях секционирования при публикации в базе данных.

Однако, если вы определили многораздельный объект (таблицу или индекс) со сжатием страниц или строк, хотя опция Игнорировать схемы секций больше не воссоздает функцию секционирования, секционированный объект все равно будет воссоздан заново.

Это происходит из-за того, что для секционированного объекта выполняется сценарий со сжатием, определенным для каждого раздела , и, поскольку количество объектов в нем отличается от того, которое было первоначально определено, SSDT воссоздает объект при публикации. Например (в формате):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

Чтобы этого не произошло, вы также можете проверить опцию Игнорировать параметры таблицы в том же диалоговом окне « Дополнительные параметры публикации » - просто имейте в виду, что вы будете игнорировать другие параметры, такие как ALLOW_ROW_LOCKSи ALLOW_PAGE_LOCKS( ссылка на параметры таблицы ).

Диалог расширенных настроек публикации

gonsalu
источник
1
Google просто привел меня сюда. Отличная информация, спасибо, что поделились.
jamiet
Обратите внимание, что если вы используете аналогичное диалоговое окно в свойствах проекта -> Страница отладки, изменения будут сохранены в файле .sqlproj.user, НО только при выгрузке проекта.
Таран
3

Ой, это не очень хорошая ситуация. Насколько я знаю, SSDT не поддерживает это. Лучший обходной путь, который я могу придумать, - это использовать сценарий перед развертыванием, чтобы сохранить границы в таблице, а затем изменить функцию разделения, используя эти значения в сценарии после развертывания.

jamiet
источник
Проигнорируйте мой ответ здесь, судя по ответу моего Гонсалу выше, я был явно неправ.
jamiet