סימפטומים
נניח שיש לך סביבת שכפול טרנזקציות של 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 /he-il/help/2908007
עדכון מצטבר 9 עבור SQL Server 2008 R2 SP2 /en-us/help/2887606
אודות עדכונים מצטברים עבור SQL Server
כל עדכון מצטבר חדש עבור SQL SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
- העדכון המצטבר האחרון עבור SQL Server 2014
- העדכון המצטבר האחרון עבור SQL Server 2012 SP1
- העדכון המצטבר האחרון עבור SQL Server 2012
- העדכון המצטבר האחרון עבור SQL Server 2008 R2 SP2
חבילת עדכון תיקון חם עבור SQL Server 2008 R2 Service Pack 1התיקון לבעיה זו הופץ לראשונה בחבילת העדכון של התיקון החם עבור SQL Server 2008 R2 Service Pack 1 .
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".
מידע נוסף
לאחר החלת התיקון החם, הוסף את קובץ ה- Script הבא למשימה של סוכן ההפצה: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 כסוכן ב- Job.job_id = Agent.job_id
WHERE Job.name כמו '%Put text mask to identify your publisher DB jobs here%' ו- Cat.name = 'REPL-Distribution'
קיבוץ לפי Job.job_id, Agent.id
HAVING COUNT(step_id) = 3
פתח את JobCur
הבא הבא מ- JobCur לתוך @JobID, @AgentID
כאשר @@FETCH_STATUS = 0 BEGIN
IF (@JobID אינו NULL) BEGIN
set @command = N'if (בחר את top 1 runstatus מתוך MSdistribution_history שבו agent_id = ' + convert(varchar, @AgentID)+ N' order by timestamp desc) = 5
raiserror(''Agent was scheduled for retry. מבצע הפעלה מחדש כעת',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
הבא הבא מ- JobCur INTO @JobID, @AgentID;
END
סגור את JobCur;
DEALLOCATE JobCur;
GO