【问题标题】:Sql Server Agent Required For Remote Connections?远程连接需要 Sql Server 代理?
【发布时间】:2009-02-12 16:54:22
【问题描述】:

我正在使用以下连接字符串连接到远程 sql server 实例

"Network Library=DBMSSOCN;Data Source=xx.xxx.x.xxx,1433;Initial Catalog=MyDatabase;User Id=MyUserId;Password=MyPassword;Connect Timeout=120;"

  1. Sql Server 浏览器正在运行
  2. 仅允许使用 TCP/IP 进行本地和远程连接

应用程序随机连接失败,引用以下 SqlException

TCP Provider, error: 0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应

连接代码如下

using (SqlConnection connection = new SqlConnection(m_ConnectionString))
{
    connection.Open(); // falls over here
}

我考虑过在端口 1433 上配置防火墙,但为什么防火墙有时允许连接,有时不允许连接?

是否需要运行 Sql Server 代理?如果是这样,为什么 MSDN 上对 Sql Server Agent 的描述在这方面并不明显?

谢谢!

编辑:尝试在防火墙上添加一个明确的规则来打开 1433,到目前为止一切都很好,但如果我修复或没有修复可能又是随机性很难说

【问题讨论】:

    标签: sql-server-2005 configuration connection


    【解决方案1】:

    不,不需要运行 SQL Server 代理。 SQL Server 代理只需要在 SQL Server 上执行计划任务。

    这可能是网络问题。你能ping通服务器吗?如果是这样,请尝试使用 /t 连续 ping 它并查看是否所有数据包都到达。

    这也可能是 SQL 服务器负载的问题。服务器是空闲还是负载不足?

    您能否在 SQL 服务器或同一 LAN 上本地测试应用程序以查看问题是否仍然存在?

    【讨论】:

    • 尝试连续 ping,没有失败,响应时间为 38 - 250 毫秒。 Sql Server 将处于持续负载状态,因为它还有 7 个运行 Sitecore 安装的数据库和一个持续使用的图像元数据库
    • 机器上本地运行的另一个应用程序查询远程失败但永不失败的同一个数据库
    • 事件日志或 sql server 日志是否让您了解正在发生的事情?
    • 日志中没有任何内容。我在想如果它被加载,那么本地应用程序也会定期失败。来自远程位置的互联网连接可能很慢......可能会超时。我想我只需要坐在防火墙上改变一下,从那以后就没有问题了
    • 我同意负载不是问题,至少在本地应用程序执行类似任务的情况下。我同意慢速网络可能是问题所在。
    【解决方案2】:

    好吧,您现在不需要运行 SQL Server 代理,错误提示您正在从场景中获得超时。

    您可能被阻止的原因有多种。也许防火墙被配置为一次只允许某个端口上的一定数量的连接。或者数据库本身正在限制连接数。您的互联网速度很慢,您正在达到 120 秒的超时时间。名单还在继续。 :)

    【讨论】:

      【解决方案3】:

      您的 SQL Server 数据库将进入休眠状态。当您第一次尝试连接时,它必须重新启动并且您的连接超时。

      确保选项“自动关闭”设置为“假”。这可以防止它在最后一个连接关闭后自行关闭。

      http://itknowledgeexchange.techtarget.com/sql-server/auto-close-is-almost-as-bad-as-auto-grow/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 2021-06-19
        相关资源
        最近更新 更多