Вызовите задание агента SQL из другого задания на удаленном сервере? - PullRequest
3 голосов
/ 25 июня 2010

Есть ли способ запустить задание из другого задания на удаленном сервере без использования связанных серверов?

Причина заключается в том, что запускаемое задание выполняет пакет служб SSIS в 2008 году. Вызывающее задание находится постояннона сервере 2005, поэтому не может выполнить задание напрямую.

Серверы не связаны, и я надеялся, что существует способ вызова одного из другого.

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Используйте тип «cmdexec (операционная система)» в агенте SQL, а затем используйте командную строку dtexec \ f «.....» для запуска пакета SSIS 2008.Это работает!

Экспортируйте файл dtsx на серверный блок 2005 и вызывайте dtsx из командной строки, используя утилиту dtexec.

2 голосов
/ 25 июня 2010

Не уверен, что это будет работать.Создайте конечную точку http, которая вызывает sp_start_job

http://technet.microsoft.com/en-us/library/ms181591.aspx

http://msdn.microsoft.com/en-us/library/ms186757.aspx

1 голос
/ 04 декабря 2013

Следующий код должен работать, если у вас есть права на выполнение xp_cmdshell.Просто нужно заменить текст для @job_name и @server_name.

USE master 
GO 
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1 
GO 
-- To update the currently configured value for advanced options.
RECONFIGURE WITH OVERRIDE 
GO
-- To disable the feature.
EXEC sp_configure 'xp_cmdshell', 1 
GO 
-- To update the currently configured value for this feature.
RECONFIGURE WITH OVERRIDE 
GO 


declare @retcode int 
declare @job_name varchar(300) 
declare @server_name varchar(200) 
declare @query varchar(8000) 
declare @cmd varchar(8000) 

set @job_name = 'hodes - grant user permissions' ------------------Job name goes here. 
set @server_name = 'msc-dbs04' ------------------Server name goes here. 

set @query = 'exec msdb.dbo.sp_start_job @job_name = ''' + @job_name + '''' 
set @cmd = 'osql -E -S ' + @server_name + ' -Q "' + @query + '"' 

print ' @job_name = ' +isnull(@job_name,'NULL @job_name') 
print ' @server_name = ' +isnull(@server_name,'NULL @server_name') 
print ' @query = ' +isnull(@query,'NULL @query') 
print ' @cmd = ' +isnull(@cmd,'NULL @cmd') 

exec @retcode = xp_cmdshell @cmd 

if @retcode <> 0 or @retcode is null 
begin 
print 'xp_cmdshell @retcode = '+isnull(convert(varchar(20),@retcode),'NULL @retcode') 
end 

USE MASTER
GO
-- To update the currently configured value for advanced options.
RECONFIGURE WITH OVERRIDE
GO
-- To disable the feature.
EXEC sp_configure 'xp_cmdshell', 0
GO
-- To update the currently configured value for this feature.
RECONFIGURE WITH OVERRIDE
GO
-- To do not allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 0
GO
-- To update the currently configured value for advanced options.
RECONFIGURE WITH OVERRIDE
GO
...