如何findMS SQL Server 2008的端口?
我在本地机器上运行MS SQL Server 2008。 我知道默认的端口是1433,但有些如何不在这个端口监听。 SQL是一个Express版本。
我已经尝试过日志,SQL Server Management Studio,registry和扩展存储过程来查找端口。 但是,我找不到它。 请帮帮我。 谢谢。
点击Windows中的Start
button。 转到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
你可以使用这两个命令: tasklist
和netstat -oan
Tasklist.exe
就像taskmgr.exe
但在文本模式下。
使用tasklist.exe
或taskmgr.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
。