1

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

"网络库=DBMSSOCN;数据源=xx.xxx.x.xxx,1433;初始目录=MyDatabase;用户ID=MyUserId;密码=MyPassword;连接超时=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 到目前为止一切都很好,但可能再次随机性很难说我是否修复了

4

3 回答 3

3

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

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

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

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

于 2009-02-12T16:56:00.363 回答
1

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

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

于 2009-02-12T16:58:16.613 回答
1

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

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

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

于 2010-09-08T20:34:25.347 回答