SSIS 在设计时获取连接但在同一台机器上调试期间失败

SSIS Acquires connection at design time but fails during debug on same machine

为了这个,我把头撞在墙上了。包含许多数据库连接的包。 来自一台特定服务器的所有数据库都给我带来问题。

为了排除其他配置问题,我创建了一个新的连接管理器。输入所有信息。除非我使用 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.

我试过 SQL 服务器的 Microsoft OLEDB 驱动程序,但没有成功。我能想到的关于这个服务器的唯一奇怪之处是它有一个实例名称。这会影响这样的事情吗?在 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 秒,因此我们将超时时间增加了三倍。

为什么会这样,我不知道。

但这并没有阻止我进行推测。在我的情况下,我得到

Unable to complete login process due to delay in opening server connection

可用性组中的服务器超时。但仅在节点的一侧。并没有持续但经常足以毁了我的早晨(由于批处理作业失败导致愤怒的用户)。 堆栈中的某些东西 关于 的疯狂手势导致连接无法完全打开。无论是 DNS、网络、目标服务器太忙,还是谁知道是什么,我的工具箱中没有足够的工具来解决它。但由于错误的根源是无法足够快地登录,因此增加超时时间似乎是一种合理的做法。

在您的情况下,您需要指定 FQDN 和 SQLCMD 的事实显示出相同的症状,似乎有一些网络问题在起作用,但超出了我的专业知识范围。然而,命名实例不应该有任何影响。我过去N年的客户除了命名实例什么都没有。

以及未来的读者,连接超时与命令超时之间的区别

https://blogs.msdn.microsoft.com/docast/2018/10/11/connection-timeout-and-command-timeout-in-sql-server/