【问题标题】:Connect successfully to SQL Server despite using different port尽管使用不同的端口,但仍成功连接到 SQL Server
【发布时间】:2026-02-15 09:45:01
【问题描述】:

我们有一个使用 Windows 身份验证连接到 SQL Server 的客户端。他们使用服务器名称和端口号(不是 1433)进行连接。

到目前为止,我们所有的软件安装都使用 SQL Server 身份验证连接到 SQL Server,并使用服务器名称、用户名和密码进行连接。

我正在尝试在我的计算机上设置一个测试,以查看我是否可以使用此客户端使用的设置(即 Windows 身份验证)与我们的软件连接,并使用服务器名称和端口号。端口号对我来说是新的。

我遇到的问题是,无论 SQL Server 安装的端口号如何,以及我从我们的软件作为端口号传入的端口号如何,我都可以成功连接。所以我显然做错了什么,或者误解了它是如何工作的。任何帮助将不胜感激。

我的第一步是打开 SQL Server 配置管理器 > 网络配置 > 我的实例的协议 > TCP/IP > 属性。然后我打开 IP 地址选项卡,并将所有 IP1 - IPAll 部分的 TCP 端口更改为 41000(我把这个数字从我的拇指中吸了出来)。所有这些的 TCP 动态端口设置都是空白的。我申请、保存并重启了服务器。

在DbExpressTSQLConnection连接参数中,我传入:

TSQL1connection.Params.Add('OSAuthentication=True');
TSQL1connection.Params.Add('HostName='+SQL_server_name); 
TSQL1connection.Params.Add('Port=123');

我在端口号中输入了什么似乎并不重要,或者我是否完全保留端口设置;我总是设法成功连接。

我只想让它成功连接到指定的端口号。

我正在使用 SQL Server 2014 和 Delphi XE8。

【问题讨论】:

    标签: sql-server tcp database-connection port delphi-xe


    【解决方案1】:

    我不知道 TSQLConnection,但我对 TCP/IP 有点了解,我怀疑这里的问题只是对端口的误解。连接中总是涉及两个端口,在这种情况下是服务器端口和客户端端口。他们不一样。在这种情况下,41000 是服务器端口,我假设 123 是客户端端口。建立连接完全没问题,这就是为什么你输入什么端口号并不重要。

    在解决您的问题方面,您需要在 SQL Server 端拒绝连接。连接后服务器会知道客户端端口,但你是否可以访问该数据并强制拒绝,恐怕我不知道。

    【讨论】: