数据收集器错误处理方式

数据收集器设计为连续运行,也就是说,很可能会出现执行错误。相应地,数据收集器必须响应两大类错误。这两类错误是:

  • 可预知的常见错误。根据收集工作流、进程和组件行为,许多错误都是可以预料的。并非总是可以从这类错误中自动恢复。但是,可以采用影响较小的简易技术来处理这类错误并使数据收集重新运行。

  • 意外错误。当这类错误出现时,不会进行从这类错误中自动恢复的尝试。数据收集器将记录可用于进行故障排除和解决错误的详细错误信息。另外,将会禁用引起错误的包或任务以阻止错误重复出现。错误重复发生会不必要地消耗系统资源,并会阻止数据收集正常运行和顺利完成。

在所有情况下,都会使用数据收集器日志记录中描述的日志记录机制记录错误。

常见错误

下表列出了常见错误,并介绍了可能的原因以及数据收集器处理这些错误的方式。

错误

说明、原因和处理方式

无法连接到数据访问接口。

数据收集器无法连接到服务器或特定的数据访问接口,如 Transact-SQL。可能的原因包括系统配置和安全问题。

处理方式:记录错误,停止收集组,并将其标记为已禁用。此禁用状态会记录在执行日志中。系统不会从该错误自动恢复。

在执行过程中与数据访问接口的连接断开。

监视的服务器意外关机,或者存在连接问题,如网络连接失败。

注意注意
计划的关机不属于此类别。在计划关机的情况下,收集组在 SQL Server 和 SQL Server 代理实例停止后关闭。

正在执行的包失败并且记录错误。在短暂的间隔后,数据收集器将尝试重新启动该包,如果失败,将停止收集组并将其标记为禁用。此禁用状态会记录在执行日志中。从该点恢复需要手动干预。

无法连接到管理数据仓库。

数据仓库与数据收集器安装在不同的计算机上。可能的原因是网络连接问题或主机服务器不可用。该错误仅影响上载包。

处理方式:因为没有提前通知服务器关机,所以无法预料并自动处理该错误。记录该错误,并在短暂间隔后重新启动上载。此类上载尝试会连续进行四次,如果均不成功,则禁用收集组并将其状态写入执行日志。

注意注意
收集组运行时收集的任何数据都将保留并累积起来。如果上载包可以连接到数据仓库,将上载累积的数据。

上载过程中与管理数据仓库的连接断开。

数据仓库与数据收集器安装在不同的计算机上。可能的原因是网络连接问题或主机服务器不可用。该错误仅影响上载包。

处理方式:因为没有提前通知服务器关机,所以无法预料并自动处理该错误。记录该错误,并在短暂间隔后重新启动上载。此类上载尝试会连续进行四次,如果均不成功,则禁用收集组并将其状态写入执行日志。

注意注意
收集组运行时收集的任何数据都将保留并累积起来。如果上载包可以连接到数据仓库,将上载累积的数据。
注意注意
错误之前的事务将标记为失败以防止部分上载。重新建立连接时,将再次上载这批数据。

从数据访问接口收到错误。

这可能是任意错误,例如数据收集器发送的无效参数或无效请求。在开发过程中通常会看到此错误,此错误最有可能影响开发人员创建自定义收集组或收集器类型。发生此错误时,将停止收集组并记录错误。应对此错误进行调查并在解决错误后手动重新启动收集组。

控制流中存在错误。

包控制流中定义的逻辑失败。

处理方式:如果此错误可预知且是某特定包所特有的,请使用 OnError 控制流路径处理它。在许多情况下,包可以从错误中自动恢复并自行重新启动。

数据流中存在错误。

该错误由数据流管道引发,通常属于以下类别之一:

  • 数据转换错误,此类错误在转换导致重要数字丢失、非重要数字丢失和字符串截断时发生。如果不支持请求的转换,也会发生数据转换错误。

  • 表达式计算错误,其在运行时计算的表达式执行无效运算,或因数据值丢失或错误而出现语法错误时发生。

  • 查找错误,当查找操作在查找表中找不到匹配项时会发生此类错误。

处理方式:将每个数据组件配置为仅当数据流错误严重时才失败。默认情况下,在对失败行数进行计数后,错误行将重定向为单独输出。数据流完成后将记录此信息并生成数据流报表。