如何找到SQL Server运行端口?


94

是的,我阅读了这篇文章。如何找到MS SQL Server 2008的端口?

没运气。

telnet 1433

返回连接失败,因此我必须指定其他端口。

我尝试使用

netstat -abn

但在此列表中我看不到sqlservr.exe或类似内容。

为什么很难找到那个港口?:/


您是否检查了Sql Server 服务是否正在运行?
Pilgerstorfer Franz 2012年

Answers:



76

很简单。记下taskmanager中的sqlsrvr.exe PID,然后运行以下命令:

netstat -ano | findstr *PID*

它会显示您的SQL Server的TCP和UDP连接(包括端口),TCP的标准是1433,UDP的标准是1434

例如: 在此处输入图片说明


3
这对我来说是“反向”的:需要查找(非默认)我在SSMS中连接到的远程计算机的端口号。
leqid


39

如果可以启动Sql Server配置管理器> SQL Server网络配置>您的实例> TCP / IP>属性

在此处输入图片说明


8

如果您已经运行“ netstat -a -b -n”(从提升的命令提示符下),却根本看不到“ sqlservr.exe”,则说明您的SQL Server服务未运行或其TCP / IP网络库处于运行状态禁用的。

运行SQL Server配置管理器(“开始” |“所有程序” |“ Microsoft SQL Server 2008” |“配置工具”)。

导航到SQL Server服务。在右侧窗格中查找SQL Server()。停止了吗?如果是这样,请启动它。

导航到“ SQL Server网络配置”(或SQL Server网络配置(32位),视情况而定),然后导航到“协议”。在右侧窗格中查找“ TCP / IP”。禁用吗?如果是这样,请启用它,然后重新启动SQL Server服务。

请注意,默认实例的实例ID将为MSSQLSERVER。

另请注意,您不必启用TCP / IP网络库即可将客户端连接到服务。客户端还可以通过共享内存网络库(如果客户端在同一台计算机上)或命名管道网络库进行连接。



2

在我们的企业中,我无权访问MSSQL Server,因此无法访问系统表。

对我有用的是:

  1. Wireshark在打开与服务器的连接时捕获网络流量(以管理员身份运行,选择“网络接口”)。
  2. 用以下命令找到IP地址 ping
  3. 过滤 ip.dst == x.x.x.x

端口info以格式显示在列中src.port -> dst.port


2

这是我使用的另一个脚本:

-- Find Database Port script by Jim Pierce  09/05/2018

USE [master]
GO

DECLARE @DynamicportNo NVARCHAR(10);
DECLARE @StaticportNo NVARCHAR(10);
DECLARE @ConnectionportNo INT;

-- Look at the port for the current connection
SELECT @ConnectionportNo = [local_tcp_port]
 FROM sys.dm_exec_connections
    WHERE session_id = @@spid;

-- Look for the port being used in the server's registry
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
                        ,@key =
                         'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
                        ,@value_name = 'TcpDynamicPorts'
                        ,@value = @DynamicportNo OUTPUT

EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
                        ,@key =
                         'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
                        ,@value_name = 'TcpPort'
                        ,@value = @StaticportNo OUTPUT

SELECT [PortsUsedByThisConnection] = @ConnectionportNo
      ,[ServerStaticPortNumber] = @StaticportNo
      ,[ServerDynamicPortNumber] = @DynamicportNo
GO

1

尝试通过以下方式启用该协议: 配置管理器 > SQL Server网络配置 > MSSQLSERVER的协议 > TCP / IP的属性


1

尝试一次:-

USE master
DECLARE       @portNumber   NVARCHAR(10)
EXEC   xp_instance_regread
@rootkey    = 'HKEY_LOCAL_MACHINE',
@key        =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll',
@value_name = 'TcpDynamicPorts',
@value      = @portNumber OUTPUT
SELECT [Port Number] = @portNumber
GO

0

SQL Server 2000程序| MS SQL服务器| 客户端网络实用程序| 选择“ TCP_IP”,然后选择“属性”

SQL Server 2005程序| SQL服务器| SQL Server配置管理器| 选择MSSQLSERVER的协议或选择客户端协议,然后右键单击TCP / IP


0

请详细说明您的答案。
哈什·沃丹

尽管此链接可以帮助您回答问题,但您可以通过将链接的重要部分放入答案中来改善此答案,这可以确保即使链接被更改或删除,您的答案仍然是答案:)
WhatsThePoint

0

另一个选择是读取Windows注册表。使用PowerShell,您可以执行以下操作:

#Get SQL instance's Port number using Windows Registry:
$instName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances[0]
$tcpPort = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instName\MSSQLServer\SuperSocketNetLib\Tcp").TcpPort
Write-Host The SQL Instance:  `"$instName`"  is listening on `"$tcpPort`"  "TcpPort."

在此处输入图片说明 确保在主机服务器(承载SQL实例/ SQL Server安装的主机服务器)中运行此PowerShell脚本,这意味着您必须首先将RDP插入SQL Server / Box / VM,然后运行此代码。

高温超导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.