sql-server - SSIS 在设计时获取连接,但在同一台机器上调试期间失败
问题描述
为了这个,我把头撞在墙上。包含许多数据库连接的软件包。来自一台特定服务器的所有数据库都给我带来了问题。
- 视觉工作室 2019
- SQL Server 2012
- 视窗 10
- SQLNCLI(从 2016 安装 cd,然后尝试 2014 cd,然后尝试从 MS 下载)
为了排除其他配置问题,我创建了一个新的连接管理器。输入所有信息。除非我使用 FQDN,否则不会填充数据库列表。测试连接成功。执行使用连接管理器的任务。在验证步骤中挂起 30 秒,然后失败并显示:
Error: 0xC020801C at MyDataFlow, MyComponent [12]: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the
connection manager "mydatabase" failed with error code
0xC0202009. There may be error messages posted before this with more information on why the
AcquireConnection method call failed.
我已经尝试过 Microsoft OLEDB Driver for SQL Server,但没有成功。我能想到的关于这个服务器的唯一奇怪的事情是它有一个实例名称。这会影响这样的事情吗?在装有 Visual Studio 2017 的 Win7 机器上,它从来没有给我带来麻烦。我真的不知道如何调试它。
有趣的是,我也无法使用 SQLCMD 连接到该服务器。我收到类似的错误,但似乎是完全不同的驱动器:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Unable to complete login process
due to delay in opening server connection.
解决方案
尝试修改您的连接字符串以包含Connect Timeout=45;
默认连接超时为 15 秒,因此我们将超时时间增加三倍。
为什么会这样,我不知道。
但这从未阻止我猜测。在我的情况下,我得到
由于延迟打开服务器连接,无法完成登录过程
可用性组中的服务器的超时。但仅在节点的一侧。而且不是始终如一,但经常会毁了我的早晨(由于批处理作业失败导致用户愤怒)。堆栈中的某些东西疯狂地表明导致连接无法完全打开。无论是 DNS、网络、目标服务器太忙,还是谁知道,我的工具带中没有足够的工具来解决它。但是由于错误的根源是它无法足够快地登录,因此增加超时时间似乎是一种合理的方法。
在您的情况下,您需要指定 FQDN 和 SQLCMD 的事实显示出相同的症状,似乎有一些网络化的东西在起作用,但超出了我的专业知识。然而,命名实例不应该有任何影响。在过去的 N 年里,我的客户除了命名实例之外什么都没有。
和未来的读者,连接超时与命令超时之间的区别
推荐阅读
- javascript - 高图表 - 打开和关闭数据
- node.js - Nginx 服务器将 .js 文件视为静态文件
- visual-studio-2019 - 将 VS 2017 扩展升级到 VS 2019
- c# - 为什么连接不能与存储 IEnumerable 的 let 子句一起使用
- business-objects - [DataDirect][ODBC lib] 刷新 WEBI 报告时出错
- rust - 如何在 Rust 结构中声明通用 HashMap?
- apache-spark - Spark Structured Streaming:在 Tumbling Window 结束时输出结果而不是 Batch
- python - 使用 yolov4-tiny 检测视频
- facebook - 如何在没有权限的情况下执行 Facebook 登录?
- kiwi-tcms - KiwiTCMS 恢复 json 备份文件失败,并出现“问题安装夹具 '-' 错误”