SQL Server codeonly连接超时

时间:2012-06-01 07:27:59

标签: .net sql-server timeout

我刚安装了SQL Server 2012和SQL Server 2008 R2

我可以在本地连接到它没问题

但是当我尝试通过LAN上的另一台PC连接时,我会暂停:

  

超时已过期。完成之前已经过了超时时间   操作或服务器没有响应。

这是代码

Dim queryString = "SELECT * FROM cities"
Using connection As New SqlConnection("data source=PCBOX\MSSERVER;initial catalog=MYDB;persist security info=True;user id=ABC;password=123;Connection Timeout=30")
    Dim command As New SqlCommand(queryString, connection)
    connection.Open()
    Dim reader As SqlDataReader = command.ExecuteReader()
    While reader.Read()
        Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))
    End While
End Using
Dim a = New MYDBEntities
Dim b = a.Cities.ToList

现在有一些有趣的说明:

  1. 我甚至可以从LAN连接ssms
  2. 当我通过局域网从ssms连接时,我总是首先在ssms中获得超时,并且只在第二次尝试时才会立即连接。
  3. 只有在我通过代码查询时才会抛出异常。同样的例外是通过sqlconnection或EF
  4. visual studio本身没有连接到DB的问题,因为它显示了EF向导并显示了可用的表,创建了类等...
  5. 我可以在一秒钟内从局域网上的ssms执行查询,我快速返回4行(全部是这样)
  6. 问题是什么?

    我试过了:

    1. 在配置管理器中启用我可以使用的任何客户端协议
    2. 重新启动我认为相关的任何服务(代理,浏览器......)
    3. 重新启动整个服务器pc
    4. 更改密码
    5. 查看SQL Server日志(似乎没有显示任何尝试连接,但我可能在错误的位置查找)
    6. 查看Windows防火墙日志(C:\ Windows \ System32 \ LogFiles \ Firewall \ pfirewall.log)它是空的
    7. 在客户端计算机上安装SQL Server 2012
    8. 将连接字符串中的端口设置为1433(我将这两个版本设置为1433,这样可以吗?)。但后来又出现了另一个错误

        

      建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。   连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应。

    9.      还有什么可以做的?

2 个答案:

答案 0 :(得分:3)

我发现这个链接看起来很像你的问题。单击here如果防火墙未记录丢弃的连接,您可能需要尝试打开防火墙上的端口。

答案 1 :(得分:2)

由于您将SQL Server 2012与SQL Server 2008 R2一起安装,我将尝试在不使用默认端口的情况下进行连接。

要查找SQL Server 2012正在使用的端口,请转到SQL“客户端11协议”部分中的SQL Server配置管理器。查看TCP / IP协议上端口的属性。

在实例名称后面的代码中添加逗号而不是端口号。

data source=PCBOX\MSSERVER,1434;

这可能是除了端口之外的东西。