Požymiai
Tarkime, kad turite "Microsoft „SQL Server“ 2008 R2", "„SQL Server“ 2012" arba "„SQL Server“ 2014 Transactional Replication" aplinką. Aplinkoje yra keli „SQL Server“ platinimo egzemplioriai. Tokiu atveju gali įvykti prieigos pažeidimas ir „SQL Server“ replikavimo paskirstymo agentas sugenda. Be to, sugeneruojamas mini iškelties failas.
Sprendimas
Pritaikius karštąją pataisą, agentas sklandžiu būdu išsijungs, o ne sugenda kartu su iškelties failu. Į paskirstymo agento užduotį galite įtraukti papildomą užduoties veiksmą, kad agentas būtų automatiškai paleistas iš naujo, kai agentas sustoja ir jo būsena yra "suplanuota paleisti iš naujo".
Daugiau informacijos apie tai, kaip įtraukti papildomą užduoties veiksmą paskirstymo agento užduotyje, ieškokite skyriuje Daugiau informacijos.
Problema pirmą kartą buvo išspręsta šiame kaupiamajame „SQL Server“ naujinime.
1 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 /en-us/help/2931693
9 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP1 /en-us/help/2931078
11 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 /en-us/help/2908007
9 kaupiamasis naujinimas, skirtas „SQL Server“ 2008 R2 SP2 /en-us/help/2887606
Apie kaupiamuosius „SQL Server“ naujinimus
Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:
- Naujausias "„SQL Server“ 2014" kaupiamasis naujinimas
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP1
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2012
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2008 R2 SP2
Karštųjų pataisų naujinimo paketas, skirtas „SQL Server“ R2 1 pakeitimų paketuiŠios problemos pataisa pirmą kartą buvo išleista karštųjų pataisų naujinimo pakete, skirtame „SQL Server“ R2 1 pakeitimų paketui.
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.
Daugiau informacijos
Pritaikę karštąją pataisą, į paskirstymo agento užduotį įtraukite šį scenarijų:DEKLARUOTI @JobID DVEJETAINĮ(16)
DECLARE int @AgentID
DECLARE @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 agentas 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'
GRUPUOTI PAGAL Job.job_id, Agent.id
HAVING COUNT(step_id) = 3
ATIDARYTI JobCur
FETCH NEXT FROM JobCur INTO @JobID, @AgentID
TUO TARPU @@FETCH_STATUS = 0 BEGIN
IF (@JobID is not NULL) BEGIN
set @command = N'if (pasirinkite top 1 runstatus from MSdistribution_history where agent_id = ' + convert(varchar, N' @AgentID)+ order by timestamp desc) = 5
raiserror(''Agentas buvo suplanuotas pakartoti. Atliekamas paleidimas iš naujo dabar'',16,1)'
EXEC msdb.dbo.sp_add_jobstep @job\_id=@JobID, 'paskirstymas', @step\_name=N'Tikrinti, ar yra pakartotinai', @step\_id=4, @on\_fail\_step\_id=1@on\_fail\_action=4@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
FETCH NEXT FROM JobCur INTO @JobID, @AgentID;
END
UŽDARYTI JobCur;
PASKIRSTYTI "JobCur";
GO