用于查找复制发布者的快照作业的脚本

时间:2011-09-21 15:04:25

标签: sql-server tsql sql-server-2008 replication sql-server-2008-r2

是否有办法通过脚本查看作业名称将为我的复制启动快照?

这适用于我的开发环境。我正在通过visual studio数据库项目自动重建我的数据库。我的复制设置已自动完成,但我仍需要在早上手动启动快照作业。

我希望能够致电:

sp_start_job 'JobThatWillTakeTheSnapShotForMyPublisher'

问题是每次运行自动部署后,作业名称都会更改(它会在作业名称的末尾添加一个数字。)

如果没有办法找到这个,有没有办法确定自己设置工作的名称?

2 个答案:

答案 0 :(得分:3)

您可以在复制表syspublications中找到用于事务复制的快照jobid和用于合并复制的sysmergepublications,例如:

declare @jobId uniqueidentifier

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

select @jobId

答案 1 :(得分:2)

这就是我提出的:

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