Symptomer
Antag, at du har et Microsoft SQL Server 2008 R2-, SQL Server 2012- eller SQL Server 2014-transaktionsreplikeringsmiljø. Der er flere distributionsforekomster af SQL Server i miljøet. I denne situation kan der opstå en adgangsfejl, og SQL Server-replikeringsdistributionsagenten går ned. Desuden genereres en minidumpfil.
Løsning
Når du har anvendt hotfixet, lukkes agenten problemfrit i stedet for at gå ned sammen med en dumpfil. Du kan tilføje et ekstra jobtrin i jobbet Distributionsagent for at genstarte agenten automatisk, når agenten er stoppet og har statussen "planlagt til genstart".
Du kan finde flere oplysninger om, hvordan du tilføjer et ekstra jobtrin i jobbet Distributionsagent, i afsnittet Flere oplysninger.
Problemet blev først løst i følgende kumulative opdatering af SQL Server.
Samlet opdatering 1 til SQL Server 2014 /en-us/help/2931693
Samlet opdatering 9 til SQL Server 2012 SP1 /en-us/help/2931078
Samlet opdatering 11 til SQL Server 2012 /en-us/help/2908007
Samlet opdatering 9 til SQL Server 2008 R2 SP2 /en-us/help/2887606
Om kumulative opdateringer til SQL Server
Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:
- Seneste kumulative opdatering til SQL Server 2014
- Seneste kumulative opdatering til SQL Server 2012 SP1
- Seneste kumulative opdatering til SQL Server 2012
- Seneste kumulative opdatering til SQL Server 2008 R2 SP2
Hotfixopdateringspakke til SQL Server 2008 R2 Service Pack 1Rettelsen til dette problem blev først udgivet i hotfixopdateringspakken til SQL Server 2008 R2 Service Pack 1.
Status
Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".
Flere oplysninger
Når du har anvendt hotfixet, skal du føje følgende script til Distribution Agent-jobbet:DECLARE @JobID BINARY(16)
DECLARE @AgentID INT
DECLARE @command varchar(max)
DEKLARER JobCur-MARKØR 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
HVOR Job.name som '%Sæt tekstmaske for at identificere dine udgiver-DB-job her%' OG Cat.name = 'REPL-Distribution'
GRUPPÉR EFTER Job.job_id, Agent.id
HAVING COUNT(step_id) = 3
ÅBN JobCur
HENT NÆSTE FRA JobCur TIL @JobID, @AgentID
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@JobID is not NULL) BEGIN
set @command = N'if (vælg top 1 runstatus fra MSdistribution_history hvor agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5
raiserror(''Agenten var planlagt til at blive forsøgt igen. Udfører genstart nu'',16,1)'
EXEC msdb.dbo.sp_add_jobstep @job\_id=@JobID, 'distribution', @step\_name=N'Check for retry', @step\_id=4, @on\_fail\_action=4@on\_fail\_step\_id=1@database\_name=N@command=@command
EXEC msdb.dbo.sp_update_jobstep @job\_id=@JobID, @step\_id=2, @on\_success\_action=4, , @on\_success\_step\_id=4
End
HENT NÆSTE FRA JobCur TIL @JobID, @AgentID;
End
LUK JobCur;
ALLOKERE JobCur;
START