Sümptomid
Oletagem, et teil on Microsoft SQL Server 2008 R2, SQL Server 2012 või SQL Server 2014 Transaktsiooni tiražeerimise keskkond. Keskkonnas on mitu SQL Server jaotuseksemplari. Sellises olukorras võib ilmneda juurdepääsurikkumine ja SQL Server tiražeerimise jaotusagent jookseb kokku. Lisaks luuakse minitõmmisefail.
Lahendus
Pärast kiirparanduse rakendamist agent sulgub sujuvalt selle asemel, et krahh koos tõmmise faili. Saate lisada leviagendi töösse lisatöö, et agent automaatselt taaskäivitada, kui agent on peatunud ja selle olek on "ajastatud taaskäivitamiseks".
Lisateavet leviagendi töösse lisatöö lisaetapi lisamise kohta leiate jaotisest Lisateave.
Probleem lahendati esmalt järgmises SQL Server koondvärskenduses.
SQL Server 2014 koondvärskendus 1 /en-us/help/2931693
SQL Server 2012 SP1 koondvärskendus 9 /en-us/help/2931078
SQL Server 2012 koondvärskendus 11 /en-us/help/2908007
SQL Server 2008 R2 SP2 koondvärskendus 9 /en-us/help/2887606
Teave SQL Server koondvärskenduste kohta
Iga uus koondvärskendus SQL Server sisaldab kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmise koondvärskenduse. Vaadake uusimaid SQL Server koondvärskendusi.
- Uusim koondvärskendus SQL Server 2014 jaoks
- Uusim koondvärskendus SQL Server 2012 SP1 jaoks
- Uusim koondvärskendus SQL Server 2012 jaoks
- Uusim koondvärskendus SQL Server 2008 R2 SP2 jaoks
Käigultparanduste värskenduspakett SQL Server 2008 R2 hoolduspaketi 1 Selle probleemi parandus anti esmakordselt välja kiirparanduse värskenduspakett SQL Server 2008 R2 Service Pack 1 .
Olek
Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.
Veel teavet
Pärast kiirparanduse rakendamist lisage jaotusagendi tööle järgmine skript:DEKLAREERI @JobID BINARY(16)
DEKLAREERI INT @AgentID
DEKLAREERI @command muutuvpikkusega diagramm(max)
DEKLAREERI JOBCur KURSOR 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 näiteks '%Put Text Mask to identify your Publisher DB Jobs here%' AND Cat.name = 'REPL-Distribution'
RÜHMITUSALUS: Job.job_id, Agent.id
HAVING COUNT(step_id) = 3
OPEN JobCur
TOO JÄRGMINE KOHAST JobCur INTO @JobID, @AgentID
KUI @@FETCH_STATUS = 0 BEGIN
IF (@JobID pole NULL) BEGIN
set @command = N'if (valige top 1 runstatus from MSdistribution_history where agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5
raiserror('Agent oli plaanitud uuesti proovima. Taaskäivitamine kohe',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
Lõpuklahv (END)
TOO JÄRGMINE KOHAST JobCur INTO @JobID, @AgentID;
Lõpuklahv (END)
CLOSE JobCur;
DEALLOCATE JobCur;
GO