我在本地计算机上运行MS SQL Server 2008。我知道默认端口是1433,但是有些人没有在这个端口上监听。 SQL是Express版本。
我已经尝试过日志,SQL Server Management Studio,注册表和扩展存储过程来查找端口。但是,我找不到它。请帮我。感谢。
答案 0 :(得分:132)
单击Windows中的Start
按钮。
转到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
。
根据连接情况,端口号可能会有所不同。
答案 1 :(得分:50)
答案 2 :(得分:47)
以下是我发现的5种方法:
方法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/
答案 3 :(得分:17)
我遇到这个是因为我在创建远程连接时遇到了问题,并且无法理解为什么在防火墙中设置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]"
- &gt;所以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"
(其中x.x.x.x是服务器ip)已经解决了此问题。
但后来我希望通过传入实例名称远程连接(例如:x.x.x.x\SQLExpress
)。这是SQL Browser服务发挥作用的时候。这是将实例名称解析为51118端口的单元。 SQL Browser服务侦听UDP端口1434(标准和静态),所以我不得不在服务器的防火墙中允许它。
要扩展一点实际答案:如果其他人不喜欢动态端口并且想要为他的SQL Server实例建立一个静态端口,那么应该尝试这个link。
答案 4 :(得分:11)
在ERROLOG日志中,如下所示。如果您没有看到SQL Server未启用远程访问,或者它不是通过TCP。您可以通过SQL Server配置管理器进行更改。
Server is listening on [ 192.128.3.2 <ipv4> 1433].
答案 5 :(得分:8)
我通过使用SQLEXPRESS2008协议下的SQL Server配置管理器启用TCP / IP解决了这个问题,我重新启动了服务,现在“服务器正在侦听”显示在ERRORLOG文件中
答案 6 :(得分:8)
试试这个(需要访问sys.dm_exec_connections
):
SELECT DISTINCT
local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
答案 7 :(得分:6)
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc'
GO
[通过读取SQL Server错误日志识别SQL Server数据库引擎的命名实例使用的端口]
答案 8 :(得分:6)
您可以使用以下两个命令: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
答案 9 :(得分:4)
我在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
答案 10 :(得分:4)
这也可以通过端口扫描来完成,如果您没有远程服务器的管理员访问权限,这是唯一可行的方法。
使用Nmap(http://nmap.org/zenmap/)进行强烈的TCP扫描&#34;将为您提供服务器上所有实例的结果:
[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
答案 11 :(得分:1)
This适用于SQL Server 2005 - 2012.在应用程序下的错误日志中查找事件id = 26022。这将显示sql server的端口号以及允许访问的ip地址。
答案 12 :(得分:1)
除了上面列出的内容之外,我还必须启用TCP和UDP端口,以便SQLExpress远程连接。因为我的开发机器上有三个不同的实例,所以我为TCP和UDP启用了1430-1435
。
答案 13 :(得分:0)
PS解决方案,将涵盖主机上的所有实例+将为您提供所有连接的客户端的所有地址,都很简洁:
ForEach ($SQL_Proc in Get-Process | Select-Object -Property ProcessName, Id | Where-Object {$_.ProcessName -like "*SQL*"})
{
Get-NetTCPConnection | `
Where-Object {$_.OwningProcess -eq $SQL_Proc.id} | `
Select-Object -Property `
@{Label ="Process_Name";e={$SQL_Proc.ProcessName}}, `
@{Label ="Local_Address";e={$_.LocalAddress + ":" + $_.LocalPort }}, `
@{Label ="Remote_Address";e={$_.RemoteAddress + ":" + $_.RemotePort}}, State | `
Format-Table
}