Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
Как возможно заскриптовать существующий план обслуживания (Maintenance Plan), чтобы, к примеру, использовать его на другом сервере, ну или просто для истории?
Ничего толкового в инете найти не удалось.
6 окт 09, 06:43    [7745819]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
SELECT @@version

???
6 окт 09, 08:23    [7745905]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
pkarklin
SELECT @@version

???
А какая разница.

У меня пока присутствует весь зоопарк.
Вот только от старья (2000) недавно избавился.

Ну скажем, предложите вариант для 2008 SP1.

PS
Я помню существовал какой-то вариант для 2000, но он не применим в последующих версиях.
6 окт 09, 08:47    [7745935]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
А какая разница.


Большая.

автор
Ну скажем, предложите вариант для 2008 SP1.


Получить XML плана можно так:

SELECT name
,PlanXML=CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML) 
FROM msdb.dbo.sysdtspackages90
6 окт 09, 09:07    [7745972]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10716
Блог
Idol_111
...Ну скажем, предложите вариант для 2008 SP1...


http://msmvps.com/blogs/gladchenko/archive/2008/12/05/1655885.aspx
6 окт 09, 11:36    [7746845]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
Спасибо за предложения.

К сожалению, для SQL2008 это как раз и не работает. Там просто нет таблицы sysdtspackages90 и ничего похожего.
7 окт 09, 01:33    [7750968]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Idol_111
Спасибо за предложения.

К сожалению, для SQL2008 это как раз и не работает. Там просто нет таблицы sysdtspackages90 и ничего похожего.


Зато там есть просто sysdtspackages.
7 окт 09, 08:43    [7751218]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
pkarklin
Idol_111
Спасибо за предложения.

К сожалению, для SQL2008 это как раз и не работает. Там просто нет таблицы sysdtspackages90 и ничего похожего.


Зато там есть просто sysdtspackages.

который абсолютно безполезен в данном случае. :)
7 окт 09, 09:21    [7751344]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Idol_111,

Тогда с помощью мышечных усилий. подключаемся к SSIS на этой машине:

StoredPackages->MSDB->Maintenance Plans, выбираем нужный и по правой педале Export, например в файл.
7 окт 09, 09:31    [7751385]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31193
Idol_111
pkarklin
Зато там есть просто sysdtspackages.

который абсолютно безполезен в данном случае. :)
А это не подойдёт?
SELECT name
,PlanXML=CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML) 
FROM msdb.dbo.sysssispackages
7 окт 09, 10:04    [7751563]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
pkarklin
Idol_111,

Тогда с помощью мышечных усилий. подключаемся к SSIS на этой машине:

StoredPackages->MSDB->Maintenance Plans, выбираем нужный и по правой педале Export, например в файл.

Думаю это единственно-правильное решение :).
Ну и его в большинстве случае думаю хватит.
7 окт 09, 11:19    [7752093]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Idol_111
Member

Откуда:
Сообщений: 598
alexeyvg
Idol_111
pkarklin
Зато там есть просто sysdtspackages.

который абсолютно безполезен в данном случае. :)
А это не подойдёт?
SELECT name
,PlanXML=CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML) 
FROM msdb.dbo.sysssispackages

Проверить уже не могу, в отгулах на неделю, но думаю и там найти пакеты для МР не удастся.
7 окт 09, 11:21    [7752111]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31193
Idol_111
alexeyvg
А это не подойдёт?
SELECT name
,PlanXML=CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML) 
FROM msdb.dbo.sysssispackages

Проверить уже не могу, в отгулах на неделю, но думаю и там найти пакеты для МР не удастся.
А я вижу :-)
7 окт 09, 11:24    [7752132]     Ответить | Цитировать Сообщить модератору
 Re: как заскриптовать план обслуживания  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10716
Блог
Idol_111
Спасибо за предложения.

К сожалению, для SQL2008 это как раз и не работает. Там просто нет таблицы sysdtspackages90 и ничего похожего.


Для 2008 другие таблицы:

USE msdb
SELECT 'EXEC [master].[sys].[xp_cmdshell] ''dtutil /Q /SQL ' + 
CASE f.foldername WHEN '' THEN '"' + p.[name] + '"' ELSE '"' + f.foldername + '\' + p.[name] + '"' END 
+ ' /ENCRYPT FILE;"c:\temp\' + p.[name] + '.dtsx";0 /SOURCESERVER ' + @@SERVERNAME + ''''
FROM msdb.dbo.sysssispackages p 
JOIN msdb.dbo.sysssispackagefolders f
ON p.folderid = f.folderid
WHERE p.folderid <> '00000000-0000-0000-0000-000000000000'
GO
7 окт 09, 13:07    [7752979]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить