代码之家  ›  专栏  ›  技术社区  ›  IronicMuffin

SSIS在设计时获得连接,但在同一台机器上调试时失败

  •  0
  • IronicMuffin  · 技术社区  · 6 年前

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

    • Visual Studio 2019
    • SQL Server 2012
    • Windows 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.
    

    我尝试了用于SQL Server的Microsoft OLEDB驱动程序,但没有成功。关于这个服务器,我能想到的唯一奇怪的事情是它有一个实例名。这会影响这样的事情吗?在我的Win7机器上使用Visual Studio 2017时,它从未给我带来麻烦。我真的不知道如何调试这个。

    有趣的是,我也无法使用SQLCMD连接到此服务器。我得到了一个类似的错误,但似乎是一个完全不同的驱动器:

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Unable to complete login process 
    due to delay in opening server connection.
    
    0 回复  |  直到 6 年前
        1
  •  3
  •   billinkc    6 年前

    尝试修改连接字符串以包括 Connect Timeout=45;

    默认连接超时为15秒,因此我们将超时时间增加了三倍。

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

    但这并没有阻止我去猜测。在我的情况下

    由于打开服务器连接延迟,无法完成登录过程

    可用性组中的服务器超时。但仅在节点的一侧。而且不是始终如一,但经常会破坏我的上午(由于批量作业失败,导致用户愤怒)。 某物 在堆栈中 疯狂的手势 导致连接无法完全打开。无论是DNS、网络、目标服务器太忙,还是谁知道呢,我的工具带中没有足够的工具来解决这个问题。但由于错误的根源是无法足够快地登录,因此增加超时时间似乎是一种合理的方法。

    在您的案例中,您需要指定FQDN和SQLCMD,这表明了相同的症状,似乎有一些网络化的东西在起作用,但超出了我的专业知识。然而,命名实例不应该有任何关系。在过去的N年里,我的客户只有命名的实例。

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

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

    推荐文章