首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过中的IP地址连接到本地Server实例?

如何通过中的IP地址连接到本地Server实例?
EN

Database Administration用户
提问于 2020-11-18 22:54:58
回答 2查看 14.1K关注 0票数 2

我正在编写一些通过IP地址连接到本地Server实例(SQLServer2017- Developer )所需的测试代码。我已经在我的机器上启动并运行了SQL Server实例,但是无法找到用于连接字符串的Server属性的正确的IP +端口。

作为一个起点,我至少尝试用(通过IP地址)手动连接到我的服务器实例,但我似乎无法弄清楚。

  1. 如何查找本地Server实例的IP地址和端口?
  2. 我应该将IP地址和端口输入到SSMS的Server Name字段中的正确格式是什么(它是否与连接字符串Server属性相同)?

我尝试在它上查找执行以下SQL代码的IP地址:

代码语言:javascript
复制
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的相同组合进行连接,但没有成功。(除下列组合外,我还收到类似的错误。)

127.0.0.1w/o端口:

127.0.0.1 w/端口通过逗号:

EN

回答 2

Database Administration用户

发布于 2020-11-19 09:32:01

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

票数 2
EN

Database Administration用户

发布于 2020-11-19 15:17:38

在连接到本地服务器实例内运行的查询将反映当前连接信息。

输入

代码语言:javascript
复制
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 

输出

代码语言:javascript
复制
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| 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:

输入

代码语言:javascript
复制
C:\> netstat -abon

输出

代码语言:javascript
复制
  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,可以有多个条目。

可能条目

代码语言:javascript
复制
...
  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地址)和如下所示的动态端口:

你也加入了!

使用脚本

进行验证

输入

代码语言:javascript
复制
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 

输出

代码语言:javascript
复制
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| 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地址的行。

Alternatives

在启动过程中查看实例的当前ERRORLOG文件,以确定使用什么:

代码语言:javascript
复制
...
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设置,其中包含了关于一台服务器/膝上型计算机上的多实例配置所期望的更多信息。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/279936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档