我正在编写一些通过IP地址连接到本地Server实例(SQLServer2017- Developer )所需的测试代码。我已经在我的机器上启动并运行了SQL Server实例,但是无法找到用于连接字符串的Server属性的正确的IP +端口。
作为一个起点,我至少尝试用(通过IP地址)手动连接到我的服务器实例,但我似乎无法弄清楚。
我尝试在它上查找执行以下SQL代码的IP地址:
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address 但是local_net_address和local_tcp_port字段为NULL,client_net_address设置为<local machine>:

我还尝试进入部分下的,并启用TCP/IP。然后,我尝试将IP4和IP6地址与端口1433 (在TCP/IP属性中默认为空白,但我尝试将其保留为空白并将其设置为1433)混合使用,但没有工作。

(每次在这里进行更改时,我都确保重新启动Server服务和Server浏览器服务。)
在尝试通过SSMS连接IP4地址的不同组合时,无论指定端口还是未指定端口,我都收到以下错误:

指定w/ Colon的

指定端口w/ Comma:

我还尝试通过127.0.0.1与上述端口1433的相同组合进行连接,但没有成功。(除下列组合外,我还收到类似的错误。)


发布于 2020-11-19 09:32:01
您可以尝试的一件事是为所有单独的Ip地址设置为"no“,并在最底层指定所需的端口。对于所有的I,我通常使用相同的端口,所以我只需要一个配置就可以捕获它们。如果没有其他,作为一种故障排除措施。

发布于 2020-11-19 15:17:38
在连接到本地服务器实例内运行的查询将反映当前连接信息。
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address +---------------+---------------+-------------+-------------------+----------------+--------------------+
| net_transport | protocol_type | auth_scheme | local_net_address | local_tcp_port | client_net_address |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| Shared memory | TSQL | NTLM | NULL | NULL | <local machine> |
+---------------+---------------+-------------+-------------------+----------------+--------------------+当您打开SSMS登录框并输入您的凭据时,您将使用共享内存连接进行连接,这基本上不需要遍历计算机的TCP/IP堆栈。
的IP和端口
在提升的命令提示符中运行以下命令以检索正在运行的进程的进程、可执行文件和进程ID:
C:\> netstat -abon TCP 127.0.0.1:50644 0.0.0.0:0 ABHÖREN 6964
[sqlservr.exe]您可能会为您的sqlservr.exe进程找到多个条目。验证末尾的数字是否相同(此处: 6964)。这是Server服务的进程ID。打开任务管理器,使用来自sqlservr.exe命令的输出检查该实例的nestat -abon进程的进程ID。对于相同的进程ID,可以有多个条目。
...
TCP 127.0.0.1:50644 0.0.0.0:0 ABH™REN 6964
[sqlservr.exe]
TCP [::1]:50644 [::]:0 ABH™REN 6964
[sqlservr.exe]
TCP 0.0.0.0:53481 0.0.0.0:0 ABH™REN 6964
[sqlservr.exe]通过查看上述信息,我可以确定我的本地Server实例之一被配置为在IPv4和IPv6上侦听,并使用TCP端口50644和53481。
在Server配置管理器中,如果向下滚动到底部,将发现本地实例正在使用的TCP动态端口。

有了这些信息,我可以尝试使用SSMS登录框进行连接并设置正确的协议。
使用SSMS
登录到Server实例
打开SSMS并输入本地膝上型计算机的IP地址(或来自TCP/IP Server配置的169.254.xxx.xxx地址)和如下所示的动态端口:

你也加入了!
进行验证
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address +---------------+---------------+-------------+-------------------+----------------+--------------------+
| net_transport | protocol_type | auth_scheme | local_net_address | local_tcp_port | client_net_address |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| TCP | TSQL | SQL | 161.78.198.140 | -12055 | 161.78.198.140 |
+---------------+---------------+-------------+-------------------+----------------+--------------------+如果本地实例的127.0.0.1:50644 /IP配置配置为使用动态端口,则netstat -abon输出中的IPv4地址是用于管理连接的IPv4地址。在我的例子中,127.0.0.1,50644是行不通的。
[::1]:50644对于IPv6也是一样的。
0.0.0.0:53481是解释sqlservr.exe (32)进程侦听到Server实例的TCP连接的端口53481上所有IP地址的行。
在启动过程中查看实例的当前ERRORLOG文件,以确定使用什么:
...
2020-11-19 15:52:04.29 spid11s A self-generated certificate was successfully loaded for encryption.
2020-11-19 15:52:04.29 spid11s Server is listening on [ 'any' <ipv6> 53481].
2020-11-19 15:52:04.29 spid11s Server is listening on [ 'any' <ipv4> 53481]. <<== HERE!!
2020-11-19 15:52:04.29 spid11s Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\SQL2016CI ].
2020-11-19 15:52:04.29 spid11s Server local connection provider is ready to accept connection on [ \\.\pipe\MSSQL$SQL2016CI\sql\query ].
2020-11-19 15:52:04.30 Server Server is listening on [ ::1 <ipv6> 50644].
2020-11-19 15:52:04.30 Server Server is listening on [ 127.0.0.1 <ipv4> 50644].
2020-11-19 15:52:04.30 Server Dedicated admin connection support was established for listening locally on port 50644. <<== HERE!!
...祝好运。
我在多实例设置上的参考文章SSMS登录框的有效连接字符串是什么?,以便在一台计算机上启动和运行TCP/IP设置,其中包含了关于一台服务器/膝上型计算机上的多实例配置所期望的更多信息。
https://dba.stackexchange.com/questions/279936
复制相似问题