怎样才能当复制发布无法连接到用户系统的SQL Server电子邮件的错误信息
-
22-07-2019 - |
题
我们有,我们已经建立了SQL Server 2005中复制一些偏远地区。有时出版商无法复制由于各种原因等
1)的网络问题,
2)用户的不当停机,
3)在域密码的变化,
4)在SQL的密码改变,
5)的故障于用户系统上进行切换。
有没有什么办法可以使SQL服务器发送管理员电子邮件时发生这种情况,所以他可以检查?
谢谢, 泽。
解决方案
我通常要处理这个问题的方法是通过修改负责开始/运行中的复制代理的SQL代理作业(S)(根据您的复制拓扑,您将有可能在不同的地方各种人)。只需添加一个作业步骤,以适当的代理工作(S)(即日志读取器代理,经销代理,合并代理,代理队列等),如果被执行“运行代理”步骤之后,/这一步完成时/失败(这取决于你是否使用的是连续的时间表)。
例如,如果我有一个事务单向推出版物设置中,分配代理将在分发运行。 /完成如果我连接到经销商,并找到负责运行该公报分销代理的SQL代理工作,我可以修改工作,并添加一个步骤,发送电子邮件到一个特定群体,如果“运行代理”步骤失败。如果我使用的是连续复制计划,我会简单地添加步骤来电子邮件,如果“运行代理”的步骤完成(因为我想我们会通知您代理将停止以任何理由)。如果我使用非连续的时间表,我可以改为只对“运行代理”步骤失败运行电子邮件的一步。你甚至可以配置此“电子邮件”的步骤,以发送电子邮件,停顿一下,然后尝试重新启动自动代理(通过简单配置步骤为“转到步骤1”成功“)。
下面是一个屏幕截图描绘作业步骤是什么样的配置为我勾勒出一个以上的代理经销:
您会在上面我已经加入了一个名为“通知,暂停,重试”的步骤将被执行的通知PIC随时代理将停止(成功或失败 - 这是故意的,因为我用连续复制计划,只是想知道,每当经销代理未运行,无论出于何种原因)。此步骤基本上将电子邮件发送到一个特定的组,等待一两分钟,然后再次开始向上剂。您可以添加代码做任何你喜欢的,包括日志记录,重新启动在一定的时间片只有一定的次数,等等。它很容易编写脚本和可重复的任何数量的代理,出版物等(我有脚本,以确保任何新在任何类型的拓扑结构的复制代理包括这种类型的配置 - 那么它只是将它们添加到释放工具或计划的执行,这取决于您的环境中如何部署)的问题
其他提示
至于检测剂的问题,你想知道的日志读取器和分配器被停止时。我的是还喜欢chadhoc连续复制,但我觉得它更容易使用警报,告诉我,如果该代理程序将停止。
USE [msdb]
GO
EXEC msdb.dbo.sp_add_alert
@name=N'Distribution agent stopped',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=2160,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@performance_condition=N'MSSQL$MYDATABASE:Replication Agents|Running|Distribution|=|0',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
EXEC msdb.dbo.sp_update_notification
@alert_name=N'Distribution agent stopped',
@operator_name=N'Amit',
@notification_method = 1
验证/同步错误并非如此简单检测。您可以设置夜间作业运行 sp_publication_validation 一>和设置在另一警报“验证失败”。
我不知道很多关于复制具体地,但 sp_readerrorlog 是一个非常有用的存储过程,让您从数据库实例中访问数据库日志。如果需要,它可以让你根据具体的错误消息,而不是从代理作业刚刚成功/失败分支更适当的反应。当然你也可以直接从存储过程发送电子邮件过,定制基于谁可以给错误反应最好收件人(或一天的时间 - 例如日/夜班协调员)。
另外也许会更合适,如果作业成功,而不是失败,考虑你的潜在故障主要包括网络不连通发送电子邮件?您可能需要设置您的最终交换规则来监视这个收件箱和火灾关闭的错误通知您的管理员,如果它没有收到预期的成功的消息....人类非常善于过滤掉不断地刺激和缺乏一个成功的消息很容易被错过。交换,另一方面是总是(通常)警惕。