如何找到MS SQL Server 2008的端口?


107

我在本地计算机上运行MS SQL Server 2008。我知道默认端口是1433,但是有些端口不监听此端口。SQL是Express版本。

我已经尝试使用日志,SQL Server Management Studio,注册表和扩展的存储过程来查找端口。但是,我找不到它。请帮我。谢谢。


我正在使用其他查看的资源来更新问题,以便使它们具有书签,并且其他人也可以使用它们。 blogs.msdn.com/sql_protocols/archive/2008/11/05/... decipherinfosys.wordpress.com/2008/01/02/... dumbledad.wordpress.com/2008/07/09/...
royalghost

我正在使用TCP视图来查看其运行的端口。令我惊讶的是,即使在将服务器安装为默认实例之后,该服务器也使用了动态端口而不是1433。我还卸载了快速版并安装了完整版,之后只有我才能看到该进程为sqlservr.exe:5272。而且,我的假设是,它是在听端口5272.
royalghost

Answers:


140

Start在Windows中单击按钮。去All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

单击上的SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP 双击(右键单击选择PropertiesTCP/IP

你会发现Default Port 1433

根据连接的不同,端口号可能会有所不同。


在运行Windows 10并安装了SQL Server 2012 Express的计算机上,SQL Server配置管理器未在Windows开始菜单中列出,但可以在“ 服务和应用程序”组下的“ 计算机管理 MMC”管理单元中找到。动态端口也不在“ SQL本机客户端配置”项(对我来说是“ 11.0”版本)下,而是在SQL Server网络配置项下(以及在TCP / IP协议属性窗口的IP地址选项卡上,位于最底部,在“ TCP动态端口 ”设置中。
肯尼·埃维特

此答案是指客户端端口,而不是原始问题中要求的服务器端口。以下@ brothers28的答案更为准确。
Slogmeister Extraordinaire

52

您也可以用

netstat -abn

它将为端口提供相应的应用程序,以使其保持打开状态。

编辑:或TCPView


您可以让我知道MS SQL Server 2008是什么名称的应用程序吗?
royalghost,

2
应该是sqlservr.exe(我没有一个要检查的)。
rslite

1
这对我有用。端口号在[sqlservr.exe] 上方的行
赞恩

我在Ssms.exe下找到了它
ThiagoPonte '16

49

这是我发现的5种方法:

  • 方法1:SQL Server配置管理器
  • 方法2:Windows事件查看器
  • 方法3:SQL Server错误日志
  • 方法4:sys.dm_exec_connections DMV
  • 方法5:使用xp_instance_regread读取注册表

方法4:sys.dm_exec_connections DMV
我认为这几乎是最简单的方法...
DMV返回可用于监视SQL Server实例的服务器状态。我们可以使用sys.dm_exec_connections DMV使用以下T-SQL代码来标识SQL Server实例正在侦听的端口号:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID
GO

Result Set:
local_tcp_port
61499

(1 row(s) affected)

方法1:SQL Server配置管理器

步骤1.单击开始>所有程序> Microsoft SQL Server 2012>配置工具> SQL Server配置管理器

步骤2.转到“ SQL Server配置管理器”>“ SQL Server网络配置”>“协议”

步骤3.右键单击TCP / IP并选择Properties

在此处输入图片说明

步骤4.在“ TCP / IP属性”对话框中,转到“ IP地址”选项卡,然后向下滚动到“ IPAll”组。

在此处输入图片说明

如果将SQL Server配置为在静态端口上运行,则它将在“ TCP端口”文本框中可用,如果在动态端口上进行配置,则当前端口将在“ TCP动态端口”文本框中可用。在这里,我的实例正在侦听端口号61499。

您可以在此处找到其他方法:http : //sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
为我工作。我尝试了“ SQL本机客户端配置”的TCP / IP属性,该属性返回默认值1433。但是当我从“ SQL Server网络配置”中检查了TCP动态端口时。我发现端口为67244。之后,我能够成功连接到该端口。+1
Reuben 2014年

17

我遇到了这个问题,因为我在创建远程连接时遇到了问题,无法理解为什么在防火墙中设置1433端口无法完成这项工作。我现在终于有了全貌,所以我认为我应该分享。

首先,必须使用“ SQLEXPRESS协议”下的“ SQL Server配置管理器”启用“ TCP / IP”!

使用命名实例时(在这种情况下为“ SQLExpress”),它将在动态端口上侦听。要找到此动态端口,您有两种选择。仅举几例:

  • 检查ERRORLOGSQL Server位于'{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(在内部,您会发现类似于以下内容的行:"2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"->因此,在这种情况下51118是动态端口。

  • 正在检查注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll对于我的情况TcpDynamicPorts=51118

    编辑{MSSQL instance name}类似于:MSSQL10_50.SQLEXPRESS,不仅SQLEXPRESS

当然,允许此TCP端口进入防火墙并通过传入以下命令创建远程连接:("x.x.x.x,51118"其中xxxx是服务器ip)此时已经解决了。

但是后来我想通过传入实例名称(例如:)进行远程连接x.x.x.x\SQLExpress。这是SQL Browser服务起作用的时候。这是将实例名称解析为51118端口的单元。SQL Browser服务侦听UDP端口1434(标准和静态),因此我必须在服务器的防火墙中也允许它。

扩展一下实际的答案:如果其他人不喜欢动态端口,而想要为其SQL Server实例提供静态端口,则应尝试使用此链接


1
+1用于SQL Browser服务。这是SQL Express如何使用端口号的关键
peterG 2014年

11

在ERROLOG日志中,如下所示。如果您没有看到它,则表明该SQL Server未启用远程访问,或者只是没有通过TCP。您可以通过SQL Server配置管理器进行更改。

Server is listening on [ 192.128.3.2 <ipv4> 1433].

我没有看到该日志,但是在SQL Server Management Studio的“连接”下,选中了“允许到该服务器的远程连接”。因此,我的理解是允许远程连接。
royalghost

@royal:除了“允许远程连接”,您还必须启用TCP协议。现在,服务器可能只在监听NP
Remus Rusanu

请参阅@morteza的以下答案以通过SQL查询读取日志 xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

我通过使用用于SQLEXPRESS2008的协议下的SQL Server配置管理器启用TCP / IP解决了问题,我重新启动了服务,现在ERRORLOG文件中显示“服务器正在侦听”


8

尝试以下操作(需要访问sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL

3
仅供参考:如果SQL Server没有打开的连接,则可能不会显示任何内容。
蒂洛2015年

6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[通过读取SQL Server错误日志来识别SQL Server数据库引擎的命名实例使用的端口]


1
感谢良好的提示Morteza,我在SQL2012上使用上述错误,但满足我的需要满足以下要求:XP_READERRORLOG 0,1,N'Server正在侦听'
mattpm

复制获取错误的查询,但这行得通, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

您可以使用以下两个命令:tasklistnetstat -oan

Tasklist.exe就像taskmgr.exe在文本模式下一样。

使用tasklist.exetaskmgr.exe可获得的PID为sqlservr.exe

使用netstat -oan,它显示一个连接PID,您可以对其进行过滤。

例:

C:\>tasklist | find /i "sqlservr.exe"
sqlservr.exe  1184 Services    0 3.181.800 KB

C:\>netstat -oan | find /i "1184"
TCP  0.0.0.0:1280  0.0.0.0:0  LISTENING  1184

在此的示例SQLServer端口是1280

摘自:http : //www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html


5

我在SSMS中使用以下脚本

SELECT
     s.host_name
    ,c.local_net_address
    ,c.local_tcp_port
    ,s.login_name
    ,s.program_name
    ,c.session_id
    ,c.connect_time
    ,c.net_transport
    ,c.protocol_type
    ,c.encrypt_option
    ,c.client_net_address
    ,c.client_tcp_port
    ,s.client_interface_name
    ,s.host_process_id
    ,c.num_reads as num_reads_connection
    ,c.num_writes as num_writes_connection
    ,s.cpu_time
    ,s.reads as num_reads_sessions
    ,s.logical_reads as num_logical_reads_sessions
    ,s.writes as num_writes_sessions
    ,c.most_recent_sql_handle
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id

--filter port number
--WHERE c.local_tcp_port <> 1433

不知道为什么这会被否决,它没有给出立即的答案,但是给了你答案,还有更多。将此添加到我的有用查询列表中。
托尼

很像查询,似乎也没有显示是否没有打开/建立连接。
蒂洛2014年

4

这也可以通过端口扫描来完成,如果您没有对远程服务器的管理员访问权限,这是唯一可行的方法。

使用Nmap(http://nmap.org/zenmap/)进行“强力TCP扫描”将为服务器上的所有实例提供如下结果:

[10.0.0.1\DATABASE]    
Instance name: DATABASE
Version: Microsoft SQL Server 2008 R2 RTM    
Product: Microsoft SQL Server 2008 R2    
Service pack level: RTM    
TCP port: 49843    
Named pipe: \\10.0.0.1\pipe\MSSQL$DATABASE\sql\query

重要说明:要使用查询分析器或MS SQL Server Management Studio进行测试,您必须使用与通常通过HTTP(例如,使用逗号而不是冒号)连接到端口的方式不同的服务器名称和端口。

  • Management Studio服务器名称: 10.0.0.1,49843
  • 连接字符串: Data Source=10.0.0.1,49843

然而

  • JDBC连接字符串: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

适用于SQL Server 2005-2012。在应用程序下的错误日志中查找事件ID = 26022。这将显示sql server的端口号以及允许访问的IP地址。


1

除了上面列出的内容之外,我还必须启用TCP和UDP端口以使SQLExpress进行远程连接。因为我的开发机器上有三个不同的实例,所以我同时启用1430-1435了TCP和UDP。

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.