Ongelman ilmenemistapa
Oletetaan, että käytössäsi on Microsoft SQL Server 2008 R2-, SQL Server 2012- tai SQL Server 2014 -tapahtumareplikointiympäristö. Ympäristössä on useita SQL Server -jakeluesiintymiä. Tässä tapauksessa saattaa tapahtua käyttöoikeusrikkomus ja SQL Server -replikoinnin jakeluagentti kaatuu. Lisäksi luodaan pienoisvedostiedosto.
Ratkaisu
Kun olet asentanut hotfix-korjauksen, agentti sammuu sulavasti sen sijaan, että se kaatuisi yhdessä vedostiedoston kanssa. Voit lisätä ylimääräisen työvaiheen jakeluagenttityöhön, jos haluat käynnistää agentin uudelleen automaattisesti, kun palvelupaketti on pysähtynyt ja sen tilana on ajoitettu uudelleenkäynnistykseen.
Lisätietoja siitä, miten voit lisätä toisen työvaiheen Jakeluagentti-työhön, on Lisätietoja-osassa.
Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä.
SQL Server 2014:n kumulatiivinen päivitys 1 /en-us/help/2931693
Kumulatiivinen päivitys 9 SQL Server 2012 SP1:lle /en-us/help/2931078
SQL Server 2012:n kumulatiivinen päivitys 11 /en-us/help/2908007
Kumulatiivinen päivitys 9, SQL Server 2008 R2 SP2 /en-us/help/2887606
Tietoja SQL Serverin kumulatiivisista päivityksistä
Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:
- SQL Server 2014:n uusin kumulatiivinen päivitys
- SQL Server 2012 SP1:n uusin kumulatiivinen päivitys
- SQL Server 2012:n uusin kumulatiivinen päivitys
- SQL Server 2008 R2 SP2:n uusin kumulatiivinen päivitys
SQL Server 2008 R2 Service Pack 1:n hotfix-päivityspaketti Tämän ongelman korjaus julkaistiin ensimmäisen kerran SQL Server 2008 R2 Service Pack 1:n hotfix-päivityspaketissa.
Tila
Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.
Lisätietoja
Kun olet asentanut hotfix-korjauksen, lisää jakeluagenttityöhön seuraava komentosarja:DECLARE @JobID BINARY(16)
DECLARE @AgentID int
DECLARE @command varchar(max)
MÄÄRITTELE JOBCUR-KOHDISTIN SELECT Job.job_id:LLE Agent.id FROM msdb.dbo.sysjobs TYÖKSI
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'
RYHMITTELYPERUSTE Job.job_id, Agent.id
HAVING LASKE(step_id) = 3
AVAA JobCur
NOUDA SEURAAVA KOHTEESTA JobCur INTO @JobID, @AgentID
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@JobID is not NULL) BEGIN
set @command = N'if (valitse top 1 suoritustila MSdistribution_history, jossa agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5
raiserror(''Agent was scheduled for retry. Suoritetaan uudelleenkäynnistystä nyt'',16,1)'
EXEC msdb.dbo.sp_add_jobstep @job\_id=@JobID, @database\_name=N'jakelu', @step\_name=N'Tarkista uudelleenyrityksessä', @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
NOUDA SEURAAVA JobCur INTO @JobID, @AgentID;
END
SULJE JobCur;
POISTA JOBCUR;
SIIRRY