我在本地计算机上运行MS SQL Server 2008。我知道默认端口是1433,但是有些端口不监听此端口。SQL是Express版本。
我已经尝试使用日志,SQL Server Management Studio,注册表和扩展的存储过程来查找端口。但是,我找不到它。请帮我。谢谢。
我在本地计算机上运行MS SQL Server 2008。我知道默认端口是1433,但是有些端口不监听此端口。SQL是Express版本。
我已经尝试使用日志,SQL Server Management Studio,注册表和扩展的存储过程来查找端口。但是,我找不到它。请帮我。谢谢。
Answers:
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
。
根据连接的不同,端口号可能会有所不同。
这是我发现的5种方法:
方法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/
我遇到了这个问题,因为我在创建远程连接时遇到了问题,无法理解为什么在防火墙中设置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' <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实例提供静态端口,则应尝试使用此链接。
在ERROLOG日志中,如下所示。如果您没有看到它,则表明该SQL Server未启用远程访问,或者只是没有通过TCP。您可以通过SQL Server配置管理器进行更改。
Server is listening on [ 192.128.3.2 <ipv4> 1433].
xp_readerrorlog 0, 1, N'Server is listening on'
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc'
GO
[通过读取SQL Server错误日志来识别SQL Server数据库引擎的命名实例使用的端口]
xp_readerrorlog 0, 1, N'Server is listening on'
您可以使用以下两个命令:tasklist
和netstat -oan
Tasklist.exe
就像taskmgr.exe
在文本模式下一样。
使用tasklist.exe
或taskmgr.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
我在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
这也可以通过端口扫描来完成,如果您没有对远程服务器的管理员访问权限,这是唯一可行的方法。
使用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(例如,使用逗号而不是冒号)连接到端口的方式不同的服务器名称和端口。
10.0.0.1,49843
Data Source=10.0.0.1,49843
然而
jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE