我在本地计算机上运行MS SQL Server 2008.我知道默认端口是1433,但是有些人没有在这个端口上监听.SQL是Express版本.
我已经尝试过日志,SQL Server Management Studio,注册表和扩展存储过程来查找端口.但是,我找不到它.请帮我.谢谢.
单击Start
Windows中的按钮.去All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager
单击SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP
双击(右键单击选择Properties
)TCP/IP
你会发现Default Port 1433
.
根据连接,端口号可能会有所不同.
你也可以看一下
netstat -abn
它为端口提供相应的应用程序,使其保持打开状态.
编辑:或TCPView.
这里有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来识别SQL Server Instance正在侦听的端口号,使用下面的T-SQL代码:
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并选择"属性"
步骤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/
我遇到这个是因为我在创建远程连接时遇到了问题,并且无法理解为什么在防火墙中设置1433端口不能正常工作.我现在终于完整了,所以我想我应该分享.
首先,必须使用SQLEXPRESS协议下的SQL Server配置管理器启用"TCP/IP"!
使用命名实例时(在本例中为"SQLExpress"),这将侦听动态端口.要找到这个动态端口,您有几个选择; 仅举几例:
检查ERRORLOG
位于的SQL 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'
- >所以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实例,那么应该尝试这个链接.
在ERROLOG日志中,如下所示.如果您没有看到SQL Server未启用远程访问,或者它不是通过TCP.您可以通过SQL Server配置管理器更改此设置.
Server is listening on [ 192.128.3.21433].
我通过使用SQLEXPRESS2008协议下的SQL Server配置管理器启用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数据库引擎的命名实例使用的端口]
您可以使用以下两个命令:tasklist
和netstat -oan
Tasklist.exe
就像taskmgr.exe
文字模式一样.
用tasklist.exe
或者taskmgr.exe
你可以得到一个PIDsqlservr.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
我在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