我正在使用以下连接字符串连接到远程sql server实例
“Network Library = DBMSSOCN; Data Source = xx.xxx.x.xxx,1433; Initial Catalog = MyDatabase; User Id = MyUserId; Password = MyPassword; Connect Timeout = 120;”
应用程序随机引发以下SqlException
无法连接TCP提供程序,错误:0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败
连接代码如下
using (SqlConnection connection = new SqlConnection(m_ConnectionString))
{
connection.Open(); // falls over here
}
我考虑过端口1433上的防火墙配置,但为什么防火墙有时会允许连接,有时候不允许?
是否需要运行Sql Server Agent?如果是这样,为什么MSDN上的Sql Server Agent的描述在这方面并不明显?
谢谢!
编辑:尝试在防火墙上添加一个明确的规则以打开1433并且到目前为止一直很好,但可能是随机的再次很难说我是否修复答案 0 :(得分:2)
不,SQL Server代理不需要运行。只需要SQL Server代理就可以在SQL服务器上执行计划任务。
这可能是一个网络问题。你能ping服务器吗?如果是这样,尝试用/ t连续ping它,看看是否所有数据包都到了。
这也可能是SQL服务器负载的问题。服务器是空闲还是负载不足?
您是否可以在SQL服务器或同一LAN上本地测试应用程序,以查看问题是否仍然存在?
答案 1 :(得分:1)
您现在不需要运行SQL Server代理,错误建议您从方案中获得超时。
您可能被阻止的原因有多种。也许防火墙配置为一次只允许端口上的一定数量的连接。或者数据库本身限制了连接数。您的互联网速度很慢,您正在达到120秒超时。名单还在继续。 :)
答案 2 :(得分:1)
您的SQL Server数据库将要休眠。第一次尝试连接时,必须重新启动并且连接超时。
确保“自动关闭”选项设置为“False”。这可以防止它在最后一次连接关闭后自行关闭。
http://itknowledgeexchange.techtarget.com/sql-server/auto-close-is-almost-as-bad-as-auto-grow/