Pazīmes
Pieņemsim, ka jums ir Microsoft SQL Server 2008 R2, SQL Server 2012 vai SQL Server 2014 transakciju replicēšanas vide. Vidē ir vairākas SQL Server izplatīšanas instances. Šādā gadījumā var rasties piekļuves pārkāpums un SQL Server replicēšanas izplatīšanas aģents avarē. Turklāt tiek ģenerēts mini izmetes fails.
Risinājums
Pēc labojumfaila lietošanas aģents tiks novērsts pareizi, nevis avarēs kopā ar izmetes failu. Sadales aģenta darbā varat pievienot papildu darba darbību, lai automātiski restartētu aģentu, kad aģents ir apstājies un tam ir statuss "ieplānota restartēšana".
Papildinformāciju par to, kā pievienot papildu darba darbību sadales aģenta darbā, skatiet sadaļā Papildinformācija.
Šī problēma pirmo reizi tika novērsta nākamajā SQL Server kumulatīvajā atjauninājumā.
1. kumulatīvais atjauninājums sistēmai SQL Server 2014 /en-us/help/2931693
9. kumulatīvais atjauninājums operētājsistēmai SQL Server 2012 SP1 /en-us/help/2931078
Kumulatīvais atjauninājums 11 operētājsistēmai SQL Server 2012 /lv-LV/help/2908007
SQL Server 2008 R2 SP2 9. kumulatīvais atjauninājums /en-us/help/2887606
Par SQL Server kumulatīvajiem atjauninājumiem
Katrā jaunajā SQL Server kumulatīvajā atjauninājumā ir visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos SQL Server kumulatīvos atjauninājumus:
- Jaunākais kumulatīvais atjauninājums SQL Server 2014
- Jaunākais kumulatīvais atjauninājums SQL Server 2012 SP1
- Jaunākais kumulatīvais atjauninājums SQL Server 2012
- Jaunākais kumulatīvais atjauninājums SQL Server 2008 R2 SP2
Labojumfailu atjaunināšanas pakotne SQL Server 2008 R2 1. servisa pakotneiŠīs problēmas labojums pirmo reizi tika izlaists labojumfailu atjauninājumu pakotnē SQL Server 2008 R2 1. servisa pakotnei.
Statuss
Microsoft apstiprināja, ka šī ir problēma Microsoft produktos, kas norādīti sadaļā "attiecas uz".
Papildinformācija
Pēc labojumfaila lietošanas pievienojiet tālāk norādīto skriptu sadales aģenta uzdevumam:DECLARE @JobID BINARY(16)
DECLARE @AgentID int
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 Agent ON Job.job_id = Agent.job_id
WHERE Job.name, piemēram, '%Put text mask to identify your publisher DB jobs here%' AND Cat.name = 'REPL-Distribution'
GRUPĒT PĒC Job.job_id, Agent.id
HAVING COUNT(step_id) = 3
ATVĒRT JobCur
IENEST NĀKAMO NO JobCur INTO @JobID, @AgentID
KAMĒR @@FETCH_STATUS = 0 SĀKAS
IF (@JobID nav NULL) BEGIN
set @command = N'if (atlasīt top 1 runstatus no MSdistribution_history kur agent_id = ' + convert(varchar, @AgentID)+ N' secība pēc timestamp desc) = 5
raiserror(''Aģentam bija ieplānots atkārtots mēģinājums. Veic restartēšanu tūlīt'',16,1)'
EXEC msdb.dbo.sp_add_jobstep @job\_id=@JobID, 'izplatīšana', @step\_name=N'Pārbaudīt, vai nav atkārtota mēģinājuma', @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
ATNEST NĀKAMO NO JobCur INTO @JobID, @AgentID;
END
AIZVĒRT JobCur;
SADALĪT JobCur;
GO