Sümptomid
Oletame, et teil on Microsoft SQL Server 2008 R2, SQL Server 2012 või SQL Server 2014 ülekande replikatsiooni keskkond. Keskkonnas on mitu SQL serveri eksemplaride jaotust. Selles olukorras võib ilmneda juurdepääsurikkumine ja SQL serveri replikatsiooni jaotuse agendi krahh. Lisaks luuakse mini mälutõmmise faili.
Lahendus
Pärast käigultparanduse rakendamist sulgub agent nõtkelt, selle asemel et krahh koos tõmmisefaili. Saate lisada levituse agendi töö täiendava töö etapi, et agent automaatselt taaskäivitada, kui agent on seiskunud, ja selle olekuks on ajastatud "ajastatud taaskäivitamiseks". Lisateavet lisateabe lisamise kohta leiate teemast jaotuse agendi töö Lisateavet leiate jaotisest Lisateave. Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Kumulatiivne Update 1 SQL Server 2014 /en-us/help/2931693
Kumulatiivne Update 9 SQL Server 2012 SP1 jaoks /en-us/help/2931078
Kumulatiivne värskendus 11 SQL Server 2012 /en-us/help/2908007
Kumulatiivne Update 9 SQL Server 2008 R2 hoolduspaketi SP2 jaoks /en-us/help/2887606
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Käigultparanduste värskenduspakett SQL Server 2008 R2 hoolduspaketi 1 jaoksSelle probleemi lahendus anti esmakordselt välja SQL Server 2008 R2 hoolduspaketi Service Pack 1 kiirparanduspaketi käigultparandustevärskenduspakett.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lisateave
Pärast käigultparanduse rakendamist lisage järgmine skript levituse agendi töö: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