Есть ли способ сгенерировать план обслуживания SQL-сервера, который будет таким же, как план, созданный мастером, но без использования диалогового окна мастера. Мне нужно что-то, что можно создать автоматически в процессе установки.
Кроме того, похоже, что то, что создает мастер SQL, зависит от текущей схемы (например, для повторной индексации таблиц). Будет ли план, созданный мастером, нарушаться при любом изменении схемы? Если да, то есть ли способ обновить его, кроме повторной регенерации всего этого?
Вместо использования планов обслуживания рассмотрите возможность использования собственных хранимых процедур.
Вот отличный пример.
(И не сжимайте файлы данных).
Нет способа (который я когда-либо видел) создать план обслуживания без помощи мастера или дизайнера. Использование SMO невозможно. Вы можете создать пакет SSIS, который будет выполнять задачи вашего плана обслуживания, и развернуть его во время установки. Однако, основываясь на ваших комментариях выше, я бы предложил написать пару хранимых процедур, которые будут выполнять ваши задачи. Для всего, что вы можете делать с планами обслуживания, вы можете написать TSQL.
Планы обслуживания в SSMS хранятся в виде пакетов SSIS, поэтому для них нельзя использовать сценарии. Но вы можете хранить их как файлы и теоретически импортировать их в экземпляр SQL Server:
Однако я думаю, что гораздо проще просто написать сценарий SQL, который запускает пакет, как упоминал сквиллман.
Я бы порекомендовал иметь набор пакетов SSIS, которые выполняют функции вашего плана обслуживания - в панели инструментов есть задачи для этого. Храните их на общем сетевом диске.
Пусть все они используют один и тот же диспетчер соединений. Затем очень легко выполнить пакет стиля плана обслуживания, изменив имя экземпляра диспетчера соединений с помощью параметра / set. Вы можете запустить пакет из командной строки, из агента SQL, где захотите.
Помимо этого, поместите их на USB-накопитель на связке ключей, чтобы они всегда были у вас под рукой.