Simptomai
Tarkime, kad turite "Microsoft SQL Server 2008 R2", "SQL Server 2012" arba "SQL Server" 2014 Transakcinis replikavimo aplinką. Aplinkoje yra keli "SQL Server" platinimo egzemplioriai. Tokiu atveju gali įvykti prieigos pažeidimas ir SQL serverio replikavimo platinimo agentas sugenda. Be to, sugeneruojamas nedidelis iškelties failas.
Sprendimas
Pritaikius šias karštąsias pataisas, agentas vietoj crashing kartu su iškelties failu išjungs "grakščiai". Galite įtraukti papildomą užduoties veiksmą į platinimo agento užduotį, kad agentas iš naujo būtų paleistas automatiškai, kai agentas sustojo ir būsena "planuojama paleisti iš naujo". Daugiau informacijos apie tai, kaip įtraukti papildomą darbo žingsnį platinimo tarpininko užduotyje, ieškokite skyriuje daugiau informacijos. Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 1 SQL serverio 2014 /en-us/help/2931693
Kaupiamasis naujinimas 9 SQL serverio 2012 SP1 /en-us/help/2931078
Kaupiamasis naujinimas 11 SQL serverio 2012 /en-us/help/2908007
Kaupiamasis naujinimas 9 SQL serverio 2008 R2 SP2 /en-us/help/2887606
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Karštųjų pataisų naujinimo paketas, skirtas "SQL Server 2008 R2" 1 pakeitimų paketuiŠios problemos pataisa pirmą kartą buvo išleista karštųjų pataisų pakete, esančiame "SQL Server 2008 R2" 1 pakeitimų pakete.
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.
Daugiau informacijos
Kai pritaikote šias karštąsias pataisas, įtraukite šį scenarijų į platinimo agento užduotį: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