Subscribe Twitter

Восстановление MSDB с другого сервера

Восстановление системной бд MSDB с одного сервера на другой упрощает процесс перехода на новый сервер, тем что, например, все задания службы агента  SQL Server переносятся автоматом. Админам остается  только в шагах заданий подкорректировать источники данных, название нового сервера, и тд. Но при таком переходе есть и подводные камни J
Например, вчера после такого восстановления, все не запускались пакеты SSIS из шага заданий, как на рисунке ниже:



В логе агента были зафиксированы ошибки вида [125] Subsystem 'SSIS' could not be loaded (reason: 126):
Т.е не могли загрузиться подсистемы, которые мы видим в списке внутри каждого задания:

Агент SQL Server хранит путь к этим подсистемам (файлам .dll) в таблице msdb.dbo.syssubsystems   колонке  subsystem_dll :


В данном случае названия инстансов старого и нового сервера были разные, и соответственно пути размещения файлов  тоже был разные, например, на старом сервере было 'C:\Program Files\Microsoft SQL Server\MSSQL.1' на новом 'C:\Program Files\Microsoft SQL Server\MSSQL.2'
После восстановления msdb таблица  msdb.dbo.syssubsystems  заменилась  данными  старого сервера, и на новом сервере путь к файлам стал не совпадать с фактическим месторасположением файлов. Отсюда и ошибки при запуске заданий.
После корректировки данных, и перезапуска агента SQL Server все заработало на ура J
Allow updates to system tables */
sp_configure 'allow updates', 1 RECONFIGURE WITH OVERRIDE
/* Update to correct path */
UPDATE msdb.dbo.syssubsystems
SET subsystem_dll =
REPLACE
(subsystem_dll,
'C:\Program Files\Microsoft SQL Server\MSSQL.1',
C:\Program Files\Microsoft SQL Server\MSSQL.2')
FROM msdb.dbo.syssubsystems
WHERE subsystem_dll LIKE 'C:\Program Files\Microsoft SQL Server\MSSQL.1%'
/* Dis-allow updates to system tables */
sp_configure 'allow updates', 0 RECONFIGURE WITH OVERRIDE /* Verify update */
 SELECT * FROM msdb.dbo.syssubsystems


0 комм.:

Отправить комментарий