sql - SSIS 包在从网络读取输入流时出现致命错误
问题描述
问题
在执行将数据从数据库插入到数据库的数据繁重的 SSIS 包时EnvironmentA1
,EnvironmentB1
我收到以下错误:
A fatal error occurred while reading the input stream from the network. The session will be terminated (input error: 10060, output error: 0)
上下文信息
EnvironmentA1
- 本地数据中心的虚拟机,运行 SQL Server 2017
EnvironmentB1
- Azure 中的虚拟机,运行 SQL Server 2017
该包正在由 SQL 代理每天安排从 SSIS 目录执行。偶尔它会成功,但现在通常预计每次运行都会失败,每次运行不同的步骤。
对此我真正感到困惑的是,如果我设置为在 Visual Studio 中使用完全相同的连接字符串EnvironmentA1
和EnvironmentB1
连接管理器的相同安全上下文以交互方式运行相同的包,它每次都会成功而不会出现任何问题。Visual Studio 本身安装在EnvironmentC1
.
这是 SQL 错误日志中的示例条目在EnvironmentB1
失败时的样子:
以上所有内容和所做的研究表明这是与网络相关的问题。发现的常见建议是禁用我为这两种环境所做的任何与 TCP 卸载相关的功能,但这没有任何区别。
EnvironmentA1
:
EnvironmentB1
:
此外,出于测试目的,我在每个环境的 NIC 配置中禁用了以下功能:
EnvironmentA1
:
- 接收端缩放状态
- 大型发送卸载 V2 IPv4
- 大型发送卸载 V2 IPv6
- TCP 校验和卸载 IPv4
- TCP 校验和卸载 IPv6
EnvironmentB1
:
- 接收端缩放
- 大型发送卸载版本 2 IPv4
- 大型发送卸载版本 2 IPv6
- TCP 校验和卸载 IPv4
- TCP 校验和卸载 IPv6
- IPSec 卸载
另请注意,还有其他 SSIS 包与相同的两种环境交互,其中一些从未产生类似的错误,但它们要么处理微量数据,要么将其推向相反的方向 ( EnvironmentB1
to EnvironmentA1
)
作为临时措施,我还尝试将包部署到EnvironmentA2
(的开发版本EnvironmentA1
)的 SSIS 目录并使用生产连接字符串安排执行,但它遇到了完全相同的问题,并且成功运行包的唯一保证方法仍然是通过视觉工作室。
如果有人至少能指出我诊断这个问题的正确方向,那将不胜感激。如果我可以为上下文添加任何其他信息,请告诉我。
解决方案
您的第三个 SSIS 错误表明连接被远程主机强行关闭。这表明存在防火墙或网络过滤问题。如果可能是这种情况,请咨询您的网络人员。
推荐阅读
- android - 按钮单击视图未从父视图中删除?
- pytorch - tensor.backward 会计算图中的所有梯度吗?
- ios - 使用数据内容播放视频而不保存
- angular - 在两个不同的模块之间共享一个组件
- sql - 寻找高级员工的程序
- ios - 使用 Apple 的人机界面指南显示内容不完整的行的正确方法?
- linkedin - linkedin api v2 端点
- hyperledger-fabric - 我可以在 hyperledger-fabric 中相同对等点的两个用户之间共享私有数据吗?
- excel - 文件错误:提供超链接时数据可能已丢失
- java - Java:存储分组对象的正确方法是什么,可按其类别访问?