我正在使用“test.udl”来测试连接。
当我使用来自路由器的IP时,它可以连接测试成功。
然后我尝试使用真正的IP来测试连接,它就崩溃了。
路由器设置如下: Archer C2>转发>虚拟服务器:
服务港口= 1433,1434,49172
IP地址= 192.168.0.100(永久)
我在Windows中关闭了防火墙。
Sql server配置管理器设置:
TCP IP属性> IP地址> IP1:
活动:是
启用:是
IP地址:119.246.x.x
TCP动态端口:0
TCP端口:null(未设置)
IP2:
活动:是
启用:是
IP地址:192.168.0.100
TCP动态端口:0
TCP端口:null(未设置)
test.udl测试信息:
失败测试
服务器名称:119.246.x.x \ server
使用Windows NT集成安全性
结果:
由于初始化提供程序时出错,测试连接失败。
[DBNETLIB] [ConnectionOpen(Connect())。] SQL Server不存在或访问被拒绝。
成功测试
服务器名称:192.168.0.100server
使用Windows NT集成安全性
结果:
测试连接成功。
有谁知道我哪里出错了?
答案 0 :(得分: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策略会丢弃来自服务器的数据包。
替代方法
要解决此问题,您必须对TCP端口或SQL Server命名实例的命名管道进行硬编码。为此,请使用类似于以下之一的连接字符串:
[OLEDB] ;硬编码的TCP OLE DB initstring Provider = SQLOLEDB.1; Integrated Security = SSPI; Persist Security> Info = False; User ID = clientID; Data Source = tcp:TcpIpAddress,port
[OLEDB] ;硬编码命名管道OLE DB initstring Provider = SQLOLEDB.1; Integrated Security = SSPI; Persist Security> Info = False; User ID = clientID; Data Source = np:\ ServerName \ pipe \ MSSQL $ InstanceName \ sql \ query
*来自https://support.microsoft.com/en-us/kb/888228
希望有所帮助
答案 1 :(得分:0)
我已经解决了。它可能导致默认端口不是1433。 我检查了日志文件查看器(SQL Server Management studio> SQL Server代理>错误日志>当前(存档也可以))
仅在sql server上打勾复选框
查找“服务器正在侦听[127.0.0.1 xxxx]。
就我而言,它是9662/9663
我将它们全部添加到路由器中并成功连接。
谢谢以上所有人。