这是我最近修改这个问题的努力。但是这一次,我试图遵循 Oded 在他的文章Getting good answers on StackOverflow中给出的良好建议。
我需要找出如何确定以下错误的根本原因:
通讯链路故障
TCP 提供程序:指定的网络名称不再可用
运行一组 SSIS 包时,我有时会看到此错误。当从以下位置运行一个到多个包时,可能会发生此错误:
- SQL Server 代理作业
- 一个批处理文件
- 在 BIDS 的调试模式下
我看到的完整错误消息如下:
SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“通信链路故障”。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TCP Provider:指定的网络名称不再可用。”。
SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TDS 流中的协议错误”。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“通信链路故障”。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TCP 提供程序:现有连接被远程主机强行关闭。”
这是我如何设计 ETL 过程的概述:
- 两台服务器
- 两者都是虚拟机
- SSIS 包在应用服务器上运行
- SQL Server 数据库位于数据库服务器上
我使用 OLE DB 连接管理器从应用服务器上的 SSIS 包连接到数据库服务器上的 SQL Server 数据库。
这些包在应用程序服务器上作为文件系统部署运行,而不是作为数据库服务器上的数据库部署运行。
这样做的主要原因是 ETL 集成了一组工具,这些工具在数据库服务器上找不到并且驱动器无法访问。这些工具包括 Apex Data Loader for Salesforce 和 pgAdmin III。
到目前为止,我无法始终如一地重现此错误。但是,这是我观察到的:
- 在正常工作时间更频繁地发生故障
- 在非工作时间发生故障的频率较低
在星期五早上大约两个小时的时间里,我能够成功地在特定包上重现错误。
如果启用了大数据流之前的子包调用,则在大数据流期间发生错误。
如果禁用大数据流之前的子包调用,则在同一大数据流期间不会发生错误。
有问题的子包回调数据库以检索少量信息以用于电子邮件正文,然后发送电子邮件。
感觉可能超出了资源限制?
也许是连接限制?
我想知道应该使用哪些工具来尝试确定错误的根本原因。
下面列出了有关所涉及的两台服务器的技术细节:
SQL Server 和数据库服务器信息:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 版权所有 (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601) : Service Pack 1) (管理程序)SSIS 信息:
Microsoft Visual Studio 2008 版本 9.0.30729.1 SP Microsoft .NET Framework 版本 3.5 SP1应用服务器信息:
操作系统名称:Microsoft Windows Server 2008 R2 标准版本:6.1.7601 Service Pack 1 Build 7601
我已经在线研究了错误消息并找到了这些,但我真的很想在继续之前获得专家的见解:
任何帮助表示赞赏。
谢谢
更新:
进一步的测试表明,这不是“SSIS 问题”,因为在使用 SQL Server Management Studio 时会以相同的速度出现相同的错误。查询的复杂性不会或多或少地产生错误。为了解决这个问题,我们尝试了一种修复方法(如下):
这是我们的第一次尝试。TCP 烟囱现在在应用程序服务器和数据库服务器上被禁用。测试表明,相同的错误以相同的速率发生。
那么从这里去哪里呢?老实说,我不确定。一个看似不错的选择仍然存在:
- 应用程序服务器和数据库服务器 SQL Server 安装不完全匹配
- 应用程序服务器 = SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
- 数据库服务器 = SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
计划是升级应用程序服务器上的 SQL Server 安装。这是一种打击和希望,但在这一点上,这似乎是最好的选择。我的大脑告诉我,这可以通过修复硬件问题(我的意思是维修或更换)来解决,并且硬件和软件配置可能对此无能为力。
但是,我仍然不确定如何确定根本原因。我仍然想知道应该使用哪些工具来诊断根本原因。