증상
Microsoft SQL Server 2008 R2, SQL Server 2012 또는 SQL Server 2014 트랜잭션 복제 환경이 있는 것으로 가정 합니다. 환경에 SQL Server의 여러 배포 인스턴스가 있습니다. 이 경우에는 액세스 위반이 발생할 수 있으며 SQL Server 복제 배포 에이전트는 충돌 합니다. 또한 미니 덤프 파일이 생성 됩니다.
해결 방법
핫픽스를 적용 한 후에는 덤프 파일과 함께 충돌 하는 대신 에이전트가 정상적으로 종료 됩니다. 배포 에이전트 작업에서 추가 작업 단계를 추가 하 여 에이전트가 중지 되 고 "다시 시작 하도록 예약 됨" 상태인 경우 자동으로 에이전트를 다시 시작 하도록 할 수 있습니다. 배포 에이전트 작업에서 추가 작업 단계를 추가 하는 방법에 대 한 자세한 내용은 추가 정보 섹션을 참조 하세요. 이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2014 누적 업데이트 1 /en-us/help/2931693
SQL Server 2012 SP1 용 누적 업데이트 9 /en-us/help/2931078
SQL Server 2012에 대 한 누적 업데이트 11 /en-us/help/2908007
SQL Server 2008 R2 SP2에 대 한 누적 업데이트 9 /en-us/help/2887606
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
SQL Server 2008 R2 서비스 팩 1 용 핫픽스 업데이트 패키지이 문제에 대 한 픽스는 SQL Server 2008 R2 서비스 팩 1 용 핫픽스 업데이트 패키지에서 처음 릴리스 되었습니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
추가 정보
핫픽스를 적용 한 후 배포 에이전트 작업에 다음 스크립트를 추가 합니다.DECLARE @JobID BINARY(16)DECLARE @AgentID intDECLARE @command varchar(max)DECLARE JobCur CURSOR FOR SELECT Job.job_id, Agent.id FROM msdb.dbo.sysjobs AS Job INNER JOIN msdb.dbo.syscategories AS Cat ON Job.category_id = Cat.category_id INNER JOIN msdb.dbo.sysjobsteps AS Steps ON Job.job_id = Steps.job_id INNER JOIN distribution.dbo.MSdistribution_agents AS Agent ON Job.job_id = Agent.job_id WHERE Job.name like '%Put Text Mask To Identify Your Publisher DB Jobs Here%' AND Cat.name = 'REPL-Distribution' GROUP BY Job.job_id, Agent.id HAVING COUNT(step_id) = 3OPEN JobCurFETCH NEXT FROM JobCur INTO @JobID, @AgentIDWHILE @@FETCH_STATUS = 0 BEGIN IF (@JobID is not NULL) BEGIN set @command = N'if (select top 1 runstatus from MSdistribution_history where agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5 raiserror(''Agent was scheduled for retry. Performing restart now'',16,1)' EXEC msdb.dbo.sp_add_jobstep @job_id=@JobID, @database_name=N'distribution', @step_name=N'Check for retry', @step_id=4, @on_fail_action=4, @on_fail_step_id=1, @command=@command EXEC msdb.dbo.sp_update_jobstep @job_id=@JobID, @step_id=2, @on_success_action=4, @on_success_step_id=4 END FETCH NEXT FROM JobCur INTO @JobID, @AgentID;ENDCLOSE JobCur;DEALLOCATE JobCur;GO