Скрипт для поиска задания моментального снимка для моего издателя репликации

Есть ли способ с помощью скрипта узнать, как называется задание, которое запустит моментальный снимок для моей репликации?

Это для моей среды разработки. Я автоматически перестраиваю свои базы данных через проект базы данных Visual Studio. У меня автоматизирована настройка репликации, но утром мне все равно приходится запускать задание моментального снимка вручную.

Я хотел бы иметь возможность звонить:

sp_start_job 'JobThatWillTakeTheSnapShotForMyPublisher'

Проблема в том, что имя задания меняется после каждого запуска автоматического развертывания (оно добавляет число в конец имени задания).

Если нет способа узнать это, есть ли способ детерминистически установить имя задания самостоятельно?


person Vaccano    schedule 21.09.2011    source источник


Ответы (2)


Идентификатор задания снимка можно найти в таблицах репликации syspublications для репликации транзакций и sysmergepublications для репликации слиянием, например:

declare @jobId uniqueidentifier

use <MyPublicationDB>
set @jobId = (
    select snapshot_jobid from syspublications 
    where name = '<MyPublication>')

select @jobId
person agdk26    schedule 18.03.2014

Вот что я придумал:

declare @jobId uniqueidentifier
declare @jobName sysname

select  @jobId = jobs.job_id, @jobName = jobs.name
from    msdb.dbo.sysjobs jobs (nolock)
        join msdb.dbo.syscategories categories (nolock)
          on jobs.category_id = categories.category_id
where   categories.name = 'REPL-Snapshot'
        and jobs.name like '%MyPublisherNameHere%'

select @jobId, @jobName   

exec sp_start_job @job_id = @jobId  
person Vaccano    schedule 21.09.2011