Gejala
Misalnya Anda memiliki Microsoft SQL Server 2008 R2, SQL Server 2012, atau lingkungan replikasi transaksional SQL Server 2014. Terdapat beberapa contoh distribusi SQL Server dalam lingkungan. Dalam situasi ini, terjadi pelanggaran akses, dan agen distribusi replikasi SQL Server lumpuh. Selain itu, file Mini dump akan dihasilkan.
Pemecahan Masalah
Setelah Anda menerapkan perbaikan terbaru, agen akan menutup dengan anggun dan bukan menabrak file dump. Anda dapat menambahkan langkah kerja tambahan dalam pekerjaan agen distribusi untuk memulai ulang agen secara otomatis ketika agen telah dihentikan dan memiliki status "dijadwalkan untuk mulai ulang". Untuk informasi selengkapnya tentang cara menambahkan langkah pekerjaan tambahan dalam pekerjaan agen distribusi, silakan rujuk ke bagian informasi selengkapnya. Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut ini.
Pembaruan kumulatif 1 untuk SQL Server 2014 /en-us/help/2931693
Pembaruan kumulatif 9 untuk SQL Server 2012 SP1 /en-us/help/2931078
Pembaruan kumulatif 11 untuk SQL Server 2012 /en-us/help/2908007
Pembaruan kumulatif 9 untuk SQL Server 2008 R2 SP2 /en-us/help/2887606
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Paket pembaruan hotfix untuk SQL Server 2008 R2 Paket Layanan 1Perbaikan untuk masalah ini pertama kali dirilis dalam paket pembaruan hotfix untuk SQL Server 2008 R2 Service Pack 1.
Status
Microsoft telah melakukan konfirmasi bahwa masalah ini timbul pada produk Microsoft yang tertera pada bagian "Berlaku untuk".
Informasi Selengkapnya
Setelah Anda menerapkan perbaikan terbaru, tambahkan skrip berikut ini ke pekerjaan agen distribusi:DECLARE @JobID BINARY(16)DECLARE @AgentID intDECLARE @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 like '%Put Text Mask To Identify Your Publisher DB Jobs Here%' AND Cat.name = 'REPL-Distribution' GROUP BY Job.job_id, Agent.id HAVING COUNT(step_id) = 3OPEN JobCurFETCH NEXT FROM JobCur INTO @JobID, @AgentIDWHILE @@FETCH_STATUS = 0 BEGIN IF (@JobID is not NULL) BEGIN set @command = N'if (select top 1 runstatus from MSdistribution_history where agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5 raiserror(''Agent was scheduled for retry. Performing restart now'',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 END FETCH NEXT FROM JobCur INTO @JobID, @AgentID;ENDCLOSE JobCur;DEALLOCATE JobCur;GO