我们有一个使用Windows身份验证连接到SQL Server的客户端。它们使用服务器名称和端口号(而不是1433)进行连接。
到目前为止,我们安装的所有软件都使用SQL Server身份验证连接到SQL Server,并使用服务器名称、用户名和密码进行连接。
我正在尝试在我的计算机上设置一个测试,看看我是否可以使用此客户端使用的设置连接我们的软件,换句话说,使用服务器名称和端口号进行Windows身份验证。端口号对我来说是新的。
我遇到的问题是,无论SQL Server安装的端口号是什么,以及我作为端口号从我们的软件传入了什么,我都可以成功连接。因此,我显然做错了什么,或者误解了这是如何工作的。任何帮助都将不胜感激。
我的第一步是打开SQL Server配置管理器>网络配置>我的实例的协议> TCP/IP >属性。然后,我打开IP addresses选项卡,并在所有IP1 - IPAll部分上将TCP端口号更改为41000 (我用拇指吸出了这个数字)。所有这些的TCP动态端口设置都是空的。我申请、保存并重启了服务器。
在DbExpress TSQLConnection连接参数中,我传入:
TSQL1connection.Params.Add('OSAuthentication=True');
TSQL1connection.Params.Add('HostName='+SQL_server_name);
TSQL1connection.Params.Add('Port=123');我在端口号中输入了什么似乎并不重要,或者我是否完全保留了端口设置;我总是设法成功连接。
我希望它只成功连接到指定的端口号。
我使用的是SQL Server2014和Delphi XE8。
发布于 2015-11-18 17:42:05
我不了解TSQLConnection,但我确实对TCP/IP略知一二,我怀疑这里的问题只是对端口的误解。连接中始终涉及两个端口,在本例中为服务器端口和客户端端口。它们是不一样的。在本例中,41000是服务器端口,我假设123是客户端端口。这完全可以建立连接,这就是为什么输入什么端口号都无关紧要。
就解决问题而言,您需要拒绝SQL Server端的连接。在连接之后,服务器将知道客户端端口,但您是否可以访问该数据并强制拒绝,我恐怕不知道。
https://stackoverflow.com/questions/33752393
复制相似问题