KB2861456 – FIX: juurdepääsu rikkumine tiražeerimise jaotusagendis SQL Server tehingu tiražeerimises

Rakenduskoht
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

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.

      

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