如何findMS SQL Server 2008的端口?

我在本地机器上运行MS SQL Server 2008。 我知道默认的端口是1433,但有些如何不在这个端口监听。 SQL是一个Express版本。

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

点击Windows中的Startbutton。 转到All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP上单击SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP双击(右键单击selectProperties

你会发现Default Port 1433

取决于连接,端口号可能会有所不同。

你也可以看看

 netstat -abn 

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

编辑 :或TCPView 。

这里是我发现的5个方法:

  • 方法1:SQL Serverconfigurationpipe理器
  • 方法2:Windows事件查看器
  • 方法3:SQL Server错误日志
  • 方法4:sys.dm_exec_connections DMV
  • 方法5:使用xp_instance_regread读取registry

方法1
方法1:SQL Serverconfigurationpipe理器:

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

第2步。转到SQL Serverconfigurationpipe理器> SQL Servernetworkingconfiguration>协议

第3步。右键单击TCP / IP并select属性

在这里输入图像说明

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

在这里输入图像说明

如果SQL Serverconfiguration为在静态端口上运行,则它将在TCP端口文本框中可用,并且如果在dynamic端口上configuration,则当前端口将在“TCPdynamic端口”文本框中可用。 这里我的实例正在监听端口号61499。

其他方法,你可以在这里find: http : //sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

我遇到这个,因为我刚刚创build远程连接的问题,并不明白为什么在防火墙设置1433端口不做这项工作。 我现在终于有了全貌,所以我想我应该分享。

首先必须在SQLEXPRESS协议下使用SQL Serverconfigurationpipe理器启用“TCP / IP”!

当使用命名实例(在这种情况下为“SQLExpress”)时,它将在dynamic端口上侦听。 要find这个dynamic的端口,你有几个选项; 仅举几例:

  • 检查位于'{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'的SQL Server的ERRORLOG (在里面你会发现类似于这样的一行: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]" – >所以在这种情况下51118是dynamic端口。

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

    编辑{MSSQL instance name}是这样的: MSSQL10_50.SQLEXPRESS ,不仅SQLEXPRESS

当然,通过传入"xxxx,51118" (其中xxxx是服务器ip) "xxxx,51118"在防火墙中允许这个TCP端口并创build一个远程连接,已经解决了这个问题。

但是之后我想通过传入实例名称来远程连接(例如: xxxx\SQLExpress )。 这是SQL浏览器服务发挥作用。 这是将实例名称parsing为51118端口的单位。 SQL浏览器服务侦听UDP端口1434(标准和静态),所以我不得不允许这也在服务器的防火墙。

为了扩展一些实际的答案:如果其他人不喜欢dynamic端口,并希望他的SQL Server实例的静态端口,应该尝试这个链接 。

在下面一行的ERROLOG日志中。 如果你没有看到它,SQL Server没有启用远程访问,或者它不是通过TCP。 您可以通过SQL Serverconfigurationpipe理器进行更改。

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

我通过在SQLEXPRESS2008协议下使用SQL Serverconfigurationpipe理器启用TCP / IP来解决问题,我重新启动服务,现在“服务器正在监听”显示在ERRORLOG文件中

试试这个(需要访问sys.dm_exec_connections ):

 SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL 
 USE master GO xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' GO 

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

我在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 

你可以使用这两个命令: tasklistnetstat -oan

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

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

使用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

这也可以通过端口扫描完成,如果您不具有对远程服务器的pipe理访问权限,则这是唯一可能的方法。

使用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进行testing,您必须使用逗号而不是冒号不同于通常通过HTTP连接到端口的方式来组build服务器名称和端口。

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

然而

  • JDBC连接string: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

这适用于SQL Server 2005 – 2012.在应用程序下的错误日志中查找event id = 26022。 这将显示的SQL Server的端口号以及什么样的IP地址被允许访问。

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