Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何找到运行SQL Server的端口?_Sql Server_Sql Server 2008_Connection String - Fatal编程技术网

Sql server 如何找到运行SQL Server的端口?

Sql server 如何找到运行SQL Server的端口?,sql-server,sql-server-2008,connection-string,Sql Server,Sql Server 2008,Connection String,是的,我读过 不走运 telnet 1433 返回连接失败,因此我必须指定其他端口 我试着用 netstat-abn 但是我在这个列表中没有看到sqlservr.exe或类似的东西 为什么很难找到那个港口/ 可能它没有使用TCP/IP 查看SQL Server Configuration Manager以查看它使用的协议。尝试以下操作: USE master GO xp_readerrorlog 0, 1, N'Server is listening on' GO SQL Server 20

是的,我读过

不走运

telnet 1433

返回连接失败,因此我必须指定其他端口

我试着用

netstat-abn

但是我在这个列表中没有看到sqlservr.exe或类似的东西


为什么很难找到那个港口/

可能它没有使用TCP/IP

查看SQL Server Configuration Manager以查看它使用的协议。

尝试以下操作:

USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on' 
GO
SQL Server 2000 节目| MS SQL Server| 客户端网络实用程序| 选择TCP\u IP,然后选择属性

SQL Server 2005 节目| SQL Server| SQL Server配置管理器| 选择MSSQLSERVER的协议或选择客户端协议,然后右键单击TCP/IP

,如果您已运行“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网络库来将客户端连接到服务。客户端还可以通过共享内存网络库(如果客户端在同一台机器上)或命名管道网络库进行连接。

非常简单。 记下taskmanager中的sqlsrvr.exe PID 然后运行以下命令:

netstat -ano | findstr *PID*
它将显示SQL server的TCP和UDP连接(包括端口) TCP的标准是1433,UDP的标准是1434

例如:

这是一个适合我的:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 

尝试通过以下方式启用协议:
配置管理器SQL server网络配置MSSQLSERVER协议>TCP/IP的属性如果可以启动SQL server配置管理器>SQL server网络配置>您的实例>TCP/IP>属性


在我们的企业中,我无法访问MSSQL服务器,因此无法访问系统表

对我有效的是:

  • 在打开与服务器的连接时捕获网络流量
    Wireshark
    (以管理员身份运行,选择网络接口)
  • 使用
    ping
  • 使用
    ip.dst==x.x.x.x进行筛选
  • 端口显示在列
    info
    中,格式为
    src.port->dst.port

    重试一次:-

    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
    

    这是我使用的另一个脚本:

    -- 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
    
    详情如下:

    也许不是最好的选择,但另一种方法是读取主机中的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

    是否检查了Sql Server服务是否正在运行?Sql本机客户端配置?TCP/IP已启用。但默认端口设置为1433:/@keram No-这是为客户端设置的。您想要服务器配置实用性。我在哪里可以找到该配置?在“开始”菜单上-您是否尝试使用master db并运行它,如果它返回0行TCP/IP被禁用。在SQL Server配置管理器中启用了TCP/IP。只需添加-在最新版本中,在开发人员版本中,TCP在默认情况下处于禁用状态,而UDP处于启用状态。这对我“反向”起作用:需要查找(非默认)我在SSMS中连接到的远程计算机的端口号。请详细说明您的答案。虽然此链接可能有助于您回答此问题,但您可以通过获取链接的重要部分并将其放入您的答案中来改进此答案,这样可以确保在更改或删除链接时,您的答案仍然是答案:)
    #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."