はい、私はこれを読みます MS SQL Server 2008のポートを見つける方法?
運がありません。
telnet 1433
接続失敗を返しますので、他のポートを指定する必要があります。
使ってみた
netstat -abn
ただし、このリストにsqlservr.exeなどは表示されません。
なぜそのポートを見つけるのがそんなに難しいのですか? :/
これを試して:
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/
とても簡単です。 taskmanagerからsqlsrvr.exe PIDを書き留めてから、次のコマンドを実行します。
netstat -ano | findstr *PID*
TCPが表示され、SQLサーバー(ポートを含む)のUDP接続は、TCPの場合は1433、UDPの場合は1434です。
例:
これは私のために働くものです:
SELECT DISTINCT
local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
「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ネットワークライブラリを有効にする必要はありません。クライアントは、共有メモリネットワークライブラリ(クライアントが同じマシン上にある場合)または名前付きパイプネットワークライブラリを介して接続することもできます。
たぶん、TCP/IPを使用していない
SQL Server構成マネージャーを見て、使用しているプロトコルを確認してください。
私たちの企業では、MSSQL Serverにアクセスできないため、システムテーブルにアクセスできません。
私のために働くのは:
Wireshark
(管理者として実行、ネットワークインターフェイスを選択)をキャプチャします。ping
でIPアドレスを見つけますip.dst == x.x.x.x
でフィルターポートは、列info
にsrc.port -> dst.port
の形式で表示されます
これは私が使用する別のスクリプトです。
-- 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
構成マネージャー>SQLサーバーネットワーク構成 >MSSQLSERVERのプロトコル>TCP/IPのプロパティ
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
一度試してください:-
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
SQL Server 2000プログラム| MS SQLサーバー|クライアントネットワークユーティリティ| TCP_IPを選択してから、プロパティ
SQL Server 2005プログラム| SQL Server | SQL Server構成マネージャー| MSSQLSERVERのプロトコルを選択するか、クライアントプロトコルを選択して、TCP/IPを右クリックします。
select * from sys.dm_tcp_listener_states
ニース形式の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
}
デフォルト出力: