Как перенести job с одного sql сервера на другой
Перейти к содержимому

Как перенести job с одного sql сервера на другой

Задача «Передача заданий»

Задача «Передача заданий» служит для передачи одного или нескольких заданий агента SQL Server между экземплярами SQL Server.

Задачу «Передача заданий» можно настроить на передачу всех или только определенных заданий. Можно также указать, будут ли переданные задания доступны в месте назначения.

Задания, подлежащие передаче, могут уже существовать в месте назначения. Задачу «Передача заданий» можно настроить на обработку существующих задач одним из следующих способов:

Перезаписать существующие задания.

Аварийно завершить задачу при наличии дубликатов заданий.

Пропустить дубликаты заданий.

Во время выполнения задача «Передача заданий» подключается к исходному и целевому серверу, используя один или два диспетчера соединений SMO. Диспетчер соединений SMO настраивается независимо от задачи «Передача заданий», но задача будет на него ссылаться. Диспетчер соединений SMO определяет сервер и режим проверки подлинности, используемый для доступа к серверу. Дополнительные сведения см. в статье SMO Connection Manager.

Передача заданий между экземплярами SQL Server

Задача «Передача заданий» поддерживает исходные серверы и серверы назначения SQL Server . Ограничений в отношении использования определенных версий источника или целевого объекта не существует.

События

Задача «Передача заданий» инициирует уведомляющее событие, сообщающее число переданных заданий, а также событие-предупреждение в случае, когда задание перезаписывается. Задача не сообщает о ходе передачи задания; она сообщает лишь о выполнении 0% и 100%.

Значение выполнения

Значение выполнения, определяемое свойством ExecutionValue задачи, возвращает число переданных заданий. Назначив пользовательскую переменную значению свойства ExecValueVariable задачи "Передача заданий", можно сделать сведения о передаче заданий доступными для других объектов пакета. Дополнительные сведения см. в разделах Переменные в службах Integration Services (SSIS) и Использование переменных в пакетах.

Записи журнала

Задача «Передача заданий» позволяет настраивать запись в журнал следующих событий:

TransferJobsTaskStarTransferringObjects Эта запись журнала сообщает о начале передачи. В записях журнала указывается время запуска.

TransferJobsTaskStarTransferringObjects Эта запись журнала сообщает об окончании передачи. В записях журнала указывается время завершения.

Кроме того, запись журнала о событии OnInformation сообщает число переданных заданий, а запись журнала о событии OnWarning производится при перезаписи каждого задания, находящегося на сервере назначения.

Безопасность и разрешения

Чтобы передавать задания, пользователь должен быть членом предопределенной роли сервера sysadmin или членом одной из предопределенных ролей базы данных агента SQL Server для базы данных msdb как в экземпляре-источнике, так и в экземпляре назначения SQL Server.

Настройка задачи «Передача заданий»

Значения свойств можно задавать с помощью конструктора Integration Services или программными средствами.

Дополнительные сведения о свойствах, которые можно задать в конструкторе служб Integration Services , см. в следующих разделах:

Дополнительные сведения об установке этих свойств программным путем см. в следующих разделах:

Связанные задачи

Дополнительные сведения об установке этих свойств в конструкторе служб Integration Services см. в следующем разделе:

Редактор задачи «Передача заданий» (страница «Общие»)

Используйте страницу Общие в диалоговом окне Редактор задачи «Передача заданий» , чтобы назвать и описать задачу передачи заданий.

Только члены предопределенной роли сервера sysadmin или одной из предопределенных ролей базы данных агента SQL Server на целевом сервере могут создавать задания. Чтобы получить доступ к задачам на исходном сервере, пользователи должны быть элементами, по меньшей мере, предопределенной роли базы данных SQLAgentUserRole . Дополнительные сведения о предопределенных ролях базы данных агента SQL Server и их разрешениях см. в разделе Предопределенные роли базы данных агента SQL Server.

Параметры

Название
Введите уникальное имя для задачи «Передача заданий». Это имя используется в качестве метки для значка задачи.

Имена задач в пределах пакета должны быть уникальными.

Описание
Введите описание задачи «Передача заданий».

Редактор задачи «Передача заданий» (страница «Задания»)

Используйте страницу Задания диалогового окна Редактор задачи «Передача заданий» для определения свойств копирования одного или более заданий агента SQL Server из одного экземпляра SQL Server в другой.

Для доступа к задачам на исходном сервере пользователи должны быть членами хотя бы одной предопределенной роли базы данных SQLAgentUserRole на этом сервере. Для успешного создания задания на целевом сервере пользователь должен быть членом предопределенной роли сервера sysadmin или одной из предопределенных ролей базы данных агента SQL Server . Дополнительные сведения о предопределенных ролях базы данных агента SQL Server и их разрешениях см. в разделе Предопределенные роли базы данных агента SQL Server.

Параметры

SourceConnection
Выберите из списка диспетчер подключений SMO или нажмите кнопку <New connection. > , чтобы создать новое подключение к исходному серверу.

DestinationConnection
Выберите из списка диспетчер подключений SMO или нажмите кнопку <New connection. > , чтобы создать новое подключение к целевому серверу.

TransferAllJobs
Укажите, должна задача копировать с исходного сервера на целевой все задания или только те, которые указаны агентом SQL Server .

Параметры этого свойства приведены в следующей таблице.

Значение Описание
True Копировать все задания.
False Копировать только выбранные задания.

JobsList
Нажмите кнопку обзора (…) , чтобы выбрать задания для копирования. Необходимо выбрать хотя бы одно задание.

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

Параметр JobsList недоступен, если параметр TransferAllJobs равен True.

IfObjectExists
Определите, как задача должна обрабатывать задания с именем, которое уже есть на целевом сервере.

Параметры этого свойства приведены в следующей таблице.

Значение Description
FailTask Задача завершается сбоем, если задание с таким именем уже есть на целевом сервере.
Overwrite Задача перезаписывает задание с таким же именем на целевом сервере.
Skip Задача пропускает задание, если задание с таким именем уже есть на целевом сервере.

EnableJobsAtDestination
Определите, будут ли активированы задания, скопированные на целевой сервер.

Как перенести job с одного sql сервера на другой

Либо, если джобов оч. много и скриптовать всё нет времени и перенос БД msdb не подходит,

то вот скриптик, который я писал для импорта:

use msdb
Declare @LinkedServ NVarchar(128)
set @LinkedServ=N’MATRIX’—Linked Server.

Create Table # tempSteps
(
id int identity
,job_ID uniqueidentifier
,step_name NVarchar(128)
,step_id int
,cmdexec_success_code int
,on_success_action int
,on_success_step_id int
,on_fail_action int
,on_fail_step_id int
,retry_attempts int
,retry_interval int
,os_run_priority int
,subsystem NVARCHAR(40)
,command NVARCHAR(max)
,database_name NVARCHAR(128)
,flags int
)

exec
(‘
insert into # tempSteps select
job_ID
,step_name
,step_id
,cmdexec_success_code
,on_success_action
,on_success_step_id
,on_fail_action
,on_fail_step_id
,retry_attempts
,retry_interval
,os_run_priority
,subsystem
,command
,database_name
,flags
FROM ‘+@LinkedServ+’.msdb.dbo.sysjobsteps
‘)

declare @job_ID uniqueidentifier
declare @step_name NVarchar(128)
declare @step_id int
declare @cmdexec_success_code int
declare @on_success_action int
declare @on_success_step_id int
declare @on_fail_action int
declare @on_fail_step_id int
declare @retry_attempts int
declare @retry_interval int
declare @os_run_priority int
declare @subsystem NVARCHAR(40)
declare @command NVARCHAR(max)
declare @database_name NVARCHAR(128)
declare @flags int

declare @i int
set @i=1
while @i<=(select count(*) from # tempSteps )
begin

select
@job_ID =job_ID
,@step_name =step_name
,@step_id =step_id
,@cmdexec_success_code =cmdexec_success_code
,@on_success_action =on_success_action
,@on_success_step_id=on_success_step_id
,@on_fail_action =on_fail_action
,@on_fail_step_id =on_fail_step_id
,@retry_attempts =retry_attempts
,@retry_interval =retry_interval
,@os_run_priority =os_run_priority
,@subsystem =subsystem
,@command =command
,@database_name =database_name
,@flags =flags
FROM # tempSteps where id=@i

EXEC msdb.dbo.sp_add_jobstep
@job_id=@job_id,
@step_name=@step_name,
@step_id=@step_id,
@cmdexec_success_code=@cmdexec_success_code,
@on_success_action=@on_success_action,
@on_success_step_id=@on_success_step_id,
@on_fail_action=@on_fail_action,
@on_fail_step_id=@on_fail_step_id,
@retry_attempts=@retry_attempts,
@retry_interval=@retry_interval,
@os_run_priority=@os_run_priority,
@subsystem=@subsystem,
@command=@command,
@database_name=@database_name,
@flags=@flags

set @i=@i+1
end
drop table # tempSteps

Create Table #tempSchedules
(
id int identity
,job_ID uniqueidentifier
,Name NVarchar(128)
,enabled int
,freq_type int
,freq_interval int
,freq_subday_type int
,freq_subday_interval int
,freq_relative_interval int
,freq_recurrence_factor int
,active_start_date int
,active_end_date int
,active_start_time int
,active_end_time int
)

exec
(‘
insert into #tempSchedules select
job_id
,name
,enabled
,freq_type
,freq_interval
,freq_subday_type
,freq_subday_interval
,freq_relative_interval
,freq_recurrence_factor
,active_start_date
,active_end_date
,active_start_time
,active_end_time
FROM ‘+@LinkedServ+’.msdb.dbo.sysjobschedules
‘)

declare @JobID uniqueidentifier
declare @Name NVarchar(128)
declare @enabled int
declare @freq_type int
declare @freq_interval int
declare @freq_subday_type int
declare @freq_subday_interval int
declare @freq_relative_interval int
declare @freq_recurrence_factor int
declare @active_start_date int
declare @active_end_date int
declare @active_start_time int
declare @active_end_time int

—declare @i int
set @i=1
while @i<=(select count(*) from #tempSchedules)
begin

select
@JobID=job_id
,@Name =name
,@enabled =enabled
,@freq_type =freq_type
,@freq_interval =freq_interval
,@freq_subday_type =freq_subday_type
,@freq_subday_interval =freq_subday_interval
,@freq_relative_interval= freq_relative_interval
,@freq_recurrence_factor =freq_recurrence_factor
,@active_start_date =active_start_date
,@active_end_date =active_end_date
,@active_start_time =active_start_time
,@active_end_time=active_end_time
FROM #tempSchedules where id=@i

Перенос задания SQL на другую машину

Как я могу передать свое задание агента SQL (план обслуживания) с моего сервера на другой сервер?

Я использую SQL Server 2008 R2. Моя работа запускает скрипт T-SQL.

Я решаю эту проблему следующим образом: я использую SSIS для передачи задания агента SQL (план обслуживания) с моего сервера на другой сервер. это способ, которым я пользуюсь:

Откройте SSIS и перейдите в Хранимый пакет → MSDB → план обслуживания и щелкните правой кнопкой мыши на своей работе и выберите экспорт выбрать файловую систему для местоположения выберите путь для своего пакета скопируйте файл на новый сервер подключиться к другим машинам SSIS теперь выберите пакет импорта в MSDB зайдите в план обслуживания и сохраните свою работу или запустите скрипт Creat

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *