web-dev-qa-db-ja.com

ポートを実行しているSQL Serverを見つける方法

はい、私はこれを読みます MS SQL Server 2008のポートを見つける方法?

運がありません。

telnet 1433

接続失敗を返しますので、他のポートを指定する必要があります。

使ってみた

netstat -abn

ただし、このリストにsqlservr.exeなどは表示されません。

なぜそのポートを見つけるのがそんなに難しいのですか? :/

75
keram

これを試して:

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/

128
AnandPhadke

とても簡単です。 taskmanagerからsqlsrvr.exe PIDを書き留めてから、次のコマンドを実行します。

netstat -ano | findstr *PID*

TCPが表示され、SQLサーバー(ポートを含む)のUDP接続は、TCPの場合は1433、UDPの場合は1434です。

例: enter image description here

66
mantas mileris

これは私のために働くものです:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 
49
Stefan Steiger

[SQL Server構成マネージャー]> [SQL Serverネットワークの構成]> [インスタンス]> [TCP/IP]> [プロパティ]を起動できる場合

enter image description here

33
dasnervtdoch

「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ネットワークライブラリを有効にする必要はありません。クライアントは、共有メモリネットワークライブラリ(クライアントが同じマシン上にある場合)または名前付きパイプネットワークライブラリを介して接続することもできます。

8

たぶん、TCP/IPを使用していない

SQL Server構成マネージャーを見て、使用しているプロトコルを確認してください。

3
podiluska

私たちの企業では、MSSQL Serverにアクセスできないため、システムテーブルにアクセスできません。

私のために働くのは:

  1. サーバーへの接続を開きながら、ネットワークトラフィックWireshark(管理者として実行、ネットワークインターフェイスを選択)をキャプチャします。
  2. pingでIPアドレスを見つけます
  3. ip.dst == x.x.x.xでフィルター

ポートは、列infosrc.port -> dst.portの形式で表示されます

2
fbehrens

これは私が使用する別のスクリプトです。

-- 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
1
Jim Pierce

構成マネージャー>SQLサーバーネットワーク構成 >MSSQLSERVERのプロトコル>TCP/IPのプロパティ

1
Berry

PowerShellの簡単なスクリプトを次に示します(PowerShellでまだ誰もソリューションを提供していないためです)。

これにより、正確なポート番号が出力されます。例: "Sql Serverはポートでリッスンしています:14"

$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

0
Eddie Kumar

一度試してください:-

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
0
Krishna Dhakate

SQL Server 2000プログラム| MS SQLサーバー|クライアントネットワークユーティリティ| TCP_IPを選択してから、プロパティ

SQL Server 2005プログラム| SQL Server | SQL Server構成マネージャー| MSSQLSERVERのプロトコルを選択するか、クライアントプロトコルを選択して、TCP/IPを右クリックします。

0
Donna Collins
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
}

デフォルト出力:

enter image description here

0
Bartosz X