תופעות
הנח שברשותך Microsoft SQL Server 2008 R2, SQL Server 2012 או סביבת שכפול הטרנזקציות של SQL Server 2014. קיימים מופעי הפצה מרובים של SQL Server בסביבה. במצב זה, הפרת גישה עלולה להתרחש, וסוכן ההפצה של שכפול שכפול SQL Server קורס. בנוסף, נוצר קובץ dump מצומצם.
פתרון
לאחר החלת התיקון החם, הסוכן ייסגר בחינניות במקום להתרסק יחד עם קובץ dump. באפשרותך להוסיף שלב משימה נוסף במשימת סוכן ההפצה כדי להפעיל מחדש את הסוכן באופן אוטומטי כאשר הסוכן הפסיק לפעול והמצב "מתוזמן להפעלה מחדש". לקבלת מידע נוסף אודות אופן ההוספה של שלב משימה נוסף במשימת סוכן ההפצה, עיין בסעיף ' מידע נוסף '. הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server.
עדכון מצטבר 1 עבור SQL Server 2014 /en-us/help/2931693
עדכון מצטבר 9 עבור SQL Server 2012 SP1 /en-us/help/2931078
עדכון מצטבר 11 עבור SQL Server 2012 /en-us/help/2908007
עדכון מצטבר 9 עבור SQL Server 2008 R2 SP2 /en-us/help/2887606
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
חבילת עדכון החם עבור SQL Server 2008 R2 Service Pack 1התיקון לבעיה זו הופץ לראשונה בחבילת עדכון התיקון החם עבור SQL Server 2008 R2 Service Pack 1.
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".
מידע נוסף
לאחר החלת התיקון החם, הוסף את קובץ ה-script הבא למשימת סוכן ההפצה: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