【问题标题】:SQL Server codeonly connection timeoutSQL Server 纯代码连接超时
【发布时间】:2012-06-06 10:50:34
【问题描述】:

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

本地连接没问题

但是当我尝试通过局域网上的另一台电脑连接时,我得到了超时:

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

这是代码

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. 我什至可以从局域网连接到 ssms
  2. 当我通过 LAN 从 ssms 连接时,我总是首先在 ssms 中获得超时,并且只有在第二次尝试时才会立即连接。
  3. 只有在我通过代码查询时才会抛出异常。同样的例外是通过 sqlconnection 或 EF
  4. visual studio 本身与数据库的连接没有问题,因为它显示 EF 向导并显示可用表、创建类等...
  5. 我可以在 LAN 上的 ssms 瞬间执行的查询,我很快就返回了 4 行(仅此而已)

可能是什么问题?

我试过了:

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

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

还有什么可以做的?

【问题讨论】:

  • 也许可以尝试选择 getdate() 看看是否与该表有关。
  • 同样的错误。 connection.open 行上的代码也会崩溃。所以我不认为它与 sql 语句本身有任何联系。
  • 你有两个 SQL server 在同一个端口上监听?????
  • 是的。我明白那是个问题?我只是将 tcp 端口(在客户端协议属性中)更改为 1434(而不是 1433)我仍然在.net 中得到相同的network-related or instance-specific... err。在 ssms 中,它仍然很受欢迎。有时我可以连接有时不能。
  • 完全关闭其他 SQL 并将所有内容设置为 1433。从数据库中删除用户 ID。删除并重新创建用户 ID。将用户 ID 添加到数据库。重新启动客户端和服务器。

标签: .net sql-server timeout


【解决方案1】:

我发现这个链接看起来很像您的问题。点击here 您可能想尝试打开防火墙上的端口,以防防火墙不记录丢弃的连接。

【讨论】:

    【解决方案2】:

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

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

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

    data source=PCBOX\MSSERVER,1434;
    

    这可能是端口以外的东西。

    【讨论】:

    • 嗨,谢谢。我尝试使用连接字符串中的端口。但这给出了不同的错误。我只是将它添加到原始帖子中。请参阅第 8 条。谢谢
    • 我发现这个链接看起来很像你的问题。 serverfault.com/a/195713你可能想尝试打开防火墙上的端口,以防防火墙没有记录丢弃的连接。
    • 是的!而已。在 IPALL 中进行设置并在该答案中运行防火墙脚本,很快就解决了问题。请将此作为“答案”,以便我可以“接受”它。谢谢十亿!
    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多