SQL复制订阅(发布作业名称)作业被DBA用户拒绝,订阅日志读取器代理自动停止,订阅状态未运行。

3/7/2017来源:SQL技巧人气:3052

SQL复制订阅日志读取器代理自动停止,同步作业被DBAAdmin用户拒绝这个问题困扰鄙人半月有余,百度千百回也没能解决。

阐述一下鄙人的解决方法:

1、首先确认SQL复制订阅日志读取器代理用户是否为数据库DBA用户(DBA用户如果没有就是默认的sa用户),如果是本地用户或者其它用户则更改为DBA用户。

USE [msdb] GO

/****** Object:  Job [发布作业名称]     ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object:  JobCategory [REPL-Distribution]     ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'REPL-Distribution' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'REPL-Distribution' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16) EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'发布作业名称',   @enabled=1,   @notify_level_eventlog=0,   @notify_level_email=0,   @notify_level_netsend=0,   @notify_level_page=0,   @delete_level=0,   @description=N'无描述。',   @category_name=N'REPL-Distribution',   @owner_login_name=N'DBA用户名', @job_id = @jobId OUTPUT

2、检查SQL复制订阅日志读取器代理的复制计划的计划类型***这是关键***

    ----------- 复制代理计划类型必须为"SQL代理启动时自动启动"。

3、此时订阅状态还是未运行,且状态“严重或差”,完成以上步骤后重新初始化订阅或者重新启动日志读取代理即可解决问题。