Скопируйте планы обслуживания на другой сервер


19

Есть ли способ скопировать планы обслуживания из одного SQL Server 2012 в другой? Оба сервера не доступны через одну и ту же копию Management Studio одновременно (в разных сетях).

Ответы:


20

Перейдите на сервер, на котором существуют задания, в обозревателе объектов Management Studio выберите «Управление»> «Агент SQL Server» и выделите папку «Задания». Нажмите F7(или View> Object Explorer Details). Вы должны увидеть несколько рабочих мест на правой панели. Выделите те, которые вы хотите скопировать, щелкните правой кнопкой мыши, Script Job As> Create To> Clipboard. Теперь подключитесь к другому серверу, откройте новое окно запроса, вставьте и нажмите F5. Гораздо проще, чем гадить с SSIS.

Возможно, вам придется предпринять дополнительные шаги, в зависимости от того, что планы делают. Подключитесь к экземпляру Integration Services, а не к экземпляру базы данных, разверните Хранимые пакеты> MSDB> Планы обслуживания, щелкните правой кнопкой мыши любой план и выберите Экспорт пакета. На другом сервере выполните те же действия, но щелкните правой кнопкой мыши Планы обслуживания и выберите Импортировать пакет. Вы должны будете сделать это для каждого плана.


11

Я нашел более хакерский способ.

Каждый План выполнения - одна запись в msdb.sysssispackagesтаблице.

Вы можете скопировать записи из msdb.sysssispackagesтаблицы исходного сервера в msdb.sysssispackagesтаблицу конечного сервера.

Просто создайте связанный сервер на исходном сервере и используйте эту Вставку с исходного сервера:

INSERT INTO 
    YOUR-DEST-SERVER-NAME.msdb.dbo.sysssispackages
SELECT        
    name, 
    id, 
    description, 
    createdate, 
    folderid, 
    ownersid, 
    cast(
        cast(
            replace(
                cast(
                    CAST(packagedata AS VARBINARY(MAX)) AS varchar(max)
                ), 
            'YOUR-SOURCE-SERVER-NAME', 'YOUR-DEST-SERVER-NAME') 
        as XML) 
    as VARBINARY(MAX)) as packagedata, 
    packageformat, 
    packagetype, 
    vermajor, 
    verminor, 
    verbuild, 
    vercomments, 
    verid, 
    isencrypted, 
    readrolesid, 
    writerolesid

FROM
    msdb.dbo.sysssispackages AS sysssispackages_1
WHERE        
    (name = 'YourMaintenancePlanName')

ИНФОРМАЦИЯ: Замена имени сервера имеет решающее значение для обработки целевого соединения в конструкторе плана обслуживания.

ВАЖНО: Копирование записей только копирует структуру плана обслуживания. Чтобы воссоздать задания, когда вы закончите копирование, вы ДОЛЖНЫ отредактировать каждый план Mantainence, сбросить расписание и сохранить его.


1
Рекомендуется использовать конечные обратные слэши в замене ('ab \', 'yz \'), чтобы избежать замены других частей данных.
Crokusek

-2
  1. войти как "sa" в противном случае не будет отображаться.

  2. быстро увидеть:

введите описание изображения здесь


OP спрашивал о планах обслуживания, которые отделены от заданий и не могут генерировать сценарии создания так, как вы можете для заданий.
Иордания
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.