Farklı iki instance olsun yada farklı serverlarda bulunan sql server üzerindeki jobları diğer bir serverdan çalıştırmak bazen yapmamız gereken bir senaryo olarak karşımıza çıkabilir.
Bu durumda çalıştırılacak script aşağıdaki gibidir.
declare @remotecod int
declare @job_name varchar(300)
declare @server_name varchar(200)
declare @query varchar(8000)
declare @cmd varchar(8000)
set @job_name = 'Gunluk Islemler' --Çalıştırılacak Job ismini tırnak içerisine yazıyoruz.
set @server_name = 'GTSS11' --Çalıştırılacak Job'ın bulunduğu diğer serverın adı yada ip si.
set @query = 'exec msdb.dbo.sp_start_job @job_name = ''' + @job_name + ''''
set @cmd = 'osql -E -S ' + @server_name + ' -Q "' + @query + '"'
exec @remotecod = master.dbo.xp_cmdshell @cmd
if @remotecod <> 0 or @retcode is null
begin
print 'xp_cmdshell @retcode = '+isnull(convert(varchar(20),@retcode),'NULL @retcode')
end
Bu durumda çalıştırılacak script aşağıdaki gibidir.
declare @remotecod int
declare @job_name varchar(300)
declare @server_name varchar(200)
declare @query varchar(8000)
declare @cmd varchar(8000)
set @job_name = 'Gunluk Islemler' --Çalıştırılacak Job ismini tırnak içerisine yazıyoruz.
set @server_name = 'GTSS11' --Çalıştırılacak Job'ın bulunduğu diğer serverın adı yada ip si.
set @query = 'exec msdb.dbo.sp_start_job @job_name = ''' + @job_name + ''''
set @cmd = 'osql -E -S ' + @server_name + ' -Q "' + @query + '"'
exec @remotecod = master.dbo.xp_cmdshell @cmd
if @remotecod <> 0 or @retcode is null
begin
print 'xp_cmdshell @retcode = '+isnull(convert(varchar(20),@retcode),'NULL @retcode')
end