是的,我读了How to find the port for MS SQL Server 2008?
没有运气。
telnet 1433
返回连接失败,所以我必须指定其他端口。
我尝试使用
netstat -abn
但我没有在此列表中看到sqlservr.exe或类似内容。
为什么找到那个港口这么困难? :/
答案 0 :(得分:126)
试试这个:
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on'
GO
http://www.mssqltips.com/sqlservertip/2495/identify-sql-server-tcp-ip-port-being-used/
答案 1 :(得分:65)
netstat -ano | findstr *PID*
它将显示SQL服务器的TCP和UDP连接(包括端口) TCP的标准是1433,UDP的标准是1434
示例:
答案 2 :(得分:49)
这是适合我的那个:
SELECT DISTINCT
local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
答案 3 :(得分:33)
答案 4 :(得分:8)
如果您运行了“netstat -a -b -n”(来自提升的命令提示符)并且您根本看不到“sqlservr.exe”,那么您的SQL Server服务未运行或其TCP / IP网络库已禁用。
运行SQL Server配置管理器(“开始”|“所有程序”|“Microsoft SQL Server 2008”|“配置工具”)。
导航到SQL Server服务。 在右侧窗格中查找SQL Server()。它停了吗?如果是这样,请启动它。
导航到SQL Server网络配置(或适当的SQL Server网络配置(32位)),然后导航到。 在右侧窗格中查找“TCP / IP”。它被禁用了吗?如果是,请启用它,然后重新启动SQL Server服务。
请注意,他的实例ID将是默认实例的MSSQLSERVER。
另请注意,您无需启用TCP / IP网络库即可将客户端连接到服务。客户端还可以通过共享内存网络库(如果客户端位于同一台计算机上)或命名管道网络库进行连接。
答案 5 :(得分:3)
也许它没有使用TCP / IP
查看SQL Server配置管理器以查看它正在使用的协议。
答案 6 :(得分:2)
在我们的企业中,我无法访问MSSQL Server,因此我无法访问系统表。
对我有用的是:
Wireshark
(以管理员身份运行,选择网络接口),同时打开与服务器的连接。ping
ip.dst == x.x.x.x
该端口以info
src.port -> dst.port
列中
答案 7 :(得分:1)
尝试通过以下方式启用协议: 配置管理器> SQL服务器网络配置> MSSQLSERVER的协议> TCP / IP
的属性答案 8 :(得分:0)
SQL Server 2000 程序| MS SQL Server | 客户网络实用程序| 选择TCP_IP,然后选择Properties
SQL Server 2005 程序| SQL Server | SQL Server配置管理器| 选择MSSQLSERVER的协议或选择客户端协议,然后右键单击TCP / IP
答案 9 :(得分:0)
尝试一次:-
USE master
DECLARE @portNumber NVARCHAR(10)
EXEC xp_instance_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll',
@value_name = 'TcpDynamicPorts',
@value = @portNumber OUTPUT
SELECT [Port Number] = @portNumber
GO
答案 10 :(得分:0)
这是我使用的另一个脚本:
-- Find Database Port script by Jim Pierce 09/05/2018
USE [master]
GO
DECLARE @DynamicportNo NVARCHAR(10);
DECLARE @StaticportNo NVARCHAR(10);
DECLARE @ConnectionportNo INT;
-- Look at the port for the current connection
SELECT @ConnectionportNo = [local_tcp_port]
FROM sys.dm_exec_connections
WHERE session_id = @@spid;
-- Look for the port being used in the server's registry
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
,@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
,@value_name = 'TcpDynamicPorts'
,@value = @DynamicportNo OUTPUT
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
,@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
,@value_name = 'TcpPort'
,@value = @StaticportNo OUTPUT
SELECT [PortsUsedByThisConnection] = @ConnectionportNo
,[ServerStaticPortNumber] = @StaticportNo
,[ServerDynamicPortNumber] = @DynamicportNo
GO
答案 11 :(得分:0)
<cfif len(trim(Main)) EQ 0>
<cfset Second= "">
</cfif>
答案 12 :(得分:0)
这是一个快速的PowerShell脚本(因为还没有人在PowerShell中提供解决方案:))
这将显示确切的端口号,例如:“ Sql Server正在侦听端口:1433 ”
$id = (ps "sql*" | ? {$_.ProcessName -eq "sqlservr"}).Id
$strAllSQLConnections = netstat -ano | findstr $id
$port = $strAllSQLConnections | % { if($_ -match "0\.0\.0\.0:\d{2,5}") {$Matches[0]} }
$port = ($port -split ':')[1]
cls
Write-Host "Sql Server is listening on port: " $port
对我来说很棒,我很高兴任何人都可以扩展代码以添加功能。 HTH
答案 13 :(得分:0)
PowerShell具有良好的格式并能够区分进程:
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
}
默认输出:
答案 14 :(得分:-1)
也许不是最好的选择,但是另一种方法是在主机上读取Windows注册表,在提升的PowerShell提示符下,您可以执行以下操作:
#Get SQL instance's Port number using Windows Registry:
$instName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances[0]
$tcpPort = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instName\MSSQLServer\SuperSocketNetLib\Tcp").TcpPort
Write-Host The SQL Instance: `"$instName`" is listening on `"$tcpPort`" "TcpPort."
确保在主机服务器(承载SQL实例/ SQL Server安装的主机服务器)中运行此PowerShell脚本,这意味着您必须先将RDP插入SQL Server / Box / VM,然后运行此代码。
HTH