SQL Server 2016 无法远程连接[已关闭]

问题描述 投票:0回答:2

我正在使用“test.udl”来测试连接。

当我使用路由器的IP时,可以连接测试成功。

然后我尝试使用真实IP来测试连接,它失败了。

路由器设置如下: Archer C2>转发>虚拟服务器:

服务端口=1433,1434,49172

IP地址=192.168.0.100(永久)

而且我已经关闭了windows中的防火墙。

Sql 服务器配置管理器设置:

TCP IP 属性>IP 地址> IP1:

主动:是

启用:是

IP地址:119.246.x.x

TCP 动态端口:0

TCP 端口:空(未设置)

IP2:

主动:是

启用:是

IP地址:192.168.0.100

TCP 动态端口:0

TCP 端口:空(未设置)

test.udl测试信息:

测试失败

服务器名称:119.246.x.x\server

使用 Windows NT 集成安全性

结果:

由于初始化提供程序时出错,测试连接失败。

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或访问被拒绝。

测试成功

服务器名称:192.168.0.100服务器

使用 Windows NT 集成安全性

结果:

测试连接成功。

有谁知道我哪里错了?

sql-server-2016 remote-access
2个回答
1
投票

这是一个错误。

症状

当您尝试使用“servername\instancename”语法连接到群集 Microsoft SQL Server 2005 或 Microsoft SQL Server 2000 命名实例时,您会收到以下错误消息: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或访问被拒绝。 当满足以下条件时,您可能会收到此错误消息:

SQL Server 2005 or SQL Server 2000 is installed on a cluster.
You are connecting to a SQL Server named instance by using TCP/IP sockets.
IPSec policy is enabled on the client domain.
IPSec policy is not enabled on the server domain.

原因

此问题发生在连接的发现阶段。当源 IP 发生变化时,客户端上的 IPSec 策略会丢弃来自服务器的数据包。

解决方法

要解决此问题,您必须对 SQL Server 命名实例的 TCP 端口或命名管道进行硬编码。为此,请使用类似于以下之一的连接字符串:

[oledb] ;硬编码 TCP OLE DB initstring 提供程序=SQLOLEDB.1;集成安全性=SSPI;持久安全性>信息=False;用户ID=clientID;数据源=tcp:TcpIpAddress,端口

[oledb] ;硬编码命名管道 OLE DB initstring 提供程序=SQLOLEDB.1;集成安全性=SSPI;持久安全性>Info=False;用户ID=clientID;数据源=np:\ServerName\pipe\MSSQL$InstanceName\sql\query

*来源取自https://support.microsoft.com/en-us/kb/888228

希望有帮助


0
投票

我已经解决了。可能是默认端口不是1433的原因。 我检查了日志文件查看器(SQL Server Management studio>SQL Server Agent>错误日志>当前(存档也有效))

仅勾选 sql server 复选框

找到“服务器正在监听[127.0.0.1 xxxx]。

我的情况是 9662/9663

我将它们全部添加到我的路由器中并成功连接。

谢谢以上大家。

© www.soinside.com 2019 - 2024. All rights reserved.