【问题标题】:Connection to SQL Server uses random ports连接到 SQL Server 使用随机端口
【发布时间】:2018-03-11 09:20:25
【问题描述】:

我在使用 C# 连接到 SQL Server 时遇到问题。我必须连接到防火墙后面的 SQL Server 实例。我正在使用以下代码(我现在没有确切的代码 sn-p,但这应该非常接近):

using (SqlConnection myConnection = new SqlConnection("Server=myServerName\myInstanceName;" +
                                                      "Database=myDataBase;" +
                                                      "User Id=myUsername;" +
                                                      "Password=myPassword;")
{
    myConnection.Open();

    using (SqlCommand myCommand = new SqlCommand("select * from table", 
                                                  myConnection))
    {        
        myReader = myCommand.ExecuteReader();
        while(myReader.Read())
        {
            // do sth.
        }   
    }
}

当我运行此代码时,似乎需要在一系列非常高的端口上使用 TCP 连接(这是我的防火墙管理员告诉我的)。 我第一次运行它时,它试图在端口 65175-65177 上建立 TCP 连接。当我们稍后再次尝试时,它尝试通过 TCP 在 45000 左右的三个端口上进行连接。

这是一个问题,因为我们不知道要打开哪些端口,因为它们似乎是随机的(这对我来说似乎很奇怪)。

我只能通过 google 找到,通常您只需要端口 1433 TCP 和 1434 UDP。我们打开了那些,但后来遇到了上面的问题。

谁能向我解释一下,为什么这段代码会尝试连接这些高位随机端口?或者如何告诉我的代码不要这样做?

一点补充信息:

  • 如果我使用 SQL Server Management Studio 连接到 SQL Server,我也会遇到同样的问题。它似乎需要这些高端口。
  • 如果我将代码更改为使用 ODBC(来自 System.Data.Odbc-Namespace),我也会遇到同样的问题。
  • 如果我在可以免费访问 SQL Server(中间没有防火墙)的机器上使用我的代码,它可以正常工作。

【问题讨论】:

标签: c# sql sql-server port


【解决方案1】:

正如 Martin Smith 在评论中指出的那样,解决方案是更改 SQL Server 的配置,因为它是为动态端口配置的。

复制自https://technet.microsoft.com/en-us/library/ms177440(v=sql.105).aspx:

将 TCP/IP 端口号分配给 SQL Server 数据库引擎

1.在 SQL Server 配置管理器的控制台面板中,展开 SQL Server 网络配置,展开实例名称的协议,然后双击 TCP/IP。

2.在 TCP/IP 属性对话框的 IP 地址选项卡上,有几个 IP 地址以 IP1、IP2 到 IPAll 的格式显示。其中之一是用于环回适配器的 IP 地址 127.0.0.1。计算机上的每个 IP 地址都会显示其他 IP 地址。右键单击每个地址,然后单击“属性”以标识您要配置的 IP 地址。

3.如果TCP动态端口对话框包含0,表示数据库引擎正在监听动态端口,删除0。

4.在“IPn 属性”区域框中的“TCP 端口”框中,键入您希望此 IP 地址侦听的端口号,然后单击“确定”。

5.在控制台窗格中,单击 SQL Server Services。

6.在详细信息窗格中,右键单击 SQL Server(实例名称),然后单击重新启动,以停止并重新启动 SQL Server。

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多