MS SQL Server 2008のポートを見つける方法は?


107

ローカルマシンでMS SQL Server 2008を実行しています。私はデフォルトのポートが1433であることを知っていますが、このポートでどのようにリッスンしていないかがわかります。SQLはExpressエディションです。

ログ、SQL Server Management Studio、レジストリ、および拡張ストアドプロシージャを試して、ポートを見つけました。しかし、私はそれを見つけることができませんでした。私を助けてください。ありがとう。


私が調べた他のリソースで質問を更新して、それらにブックマークを付け、他のユーザーもそれらを利用できるようにします。 blogs.msdn.com/sql_protocols/archive/2008/11/05/... decipherinfosys.wordpress.com/2008/01/02/... dumbledad.wordpress.com/2008/07/09/...
royalghost

TCPビューを使用して、それが実行されているポートを確認しています。サーバーがデフォルトのインスタンスとしてインストールされた後でも、サーバーが1433ではなく動的ポートを使用していることを確認して驚いています。また、Express Editionをアンインストールし、フルエディションをインストールした後、プロセスのみをsqlservr.exe:5272として表示できます。そして、私の仮定は、それはポート5272.で待機していることである
royalghost

回答:


139

StartWindowsのボタンをクリックします。に行く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

接続によっては、ポート番号が異なる場合があります。


Windows 10を実行し、SQL Server 2012 Expressがインストールされている私のコンピューターでは、SQL Server構成マネージャーはWindowsのスタートメニューに表示されませんが、コンピューターの管理 MMCスナップインの[ サービスとアプリケーション]グループにあります。動的ポートは、「SQLネイティブクライアント構成」項目(私にとってはバージョン「11.0」)ではなく、SQL Serverネットワーク構成項目(およびTCP / IPプロトコルプロパティウィンドウの[ IPアドレス ]タブ)にあります。一番下、TCP動的ポートの設定)。
ケニーエビット2017

この回答は、元の質問で尋ねられているサーバーポートではなく、クライアントポートを指します。以下の@ brothers28からの回答はより正確です。
Slogmeister Extraordinaire 2018

52

あなたも見ることができます

netstat -abn

ポートを開いたままにする対応するアプリケーションでポートを提供します。

編集:またはTCPView


MS SQL Server 2008がアプリケーションと呼ばれている名前を教えてください。
ロイヤルゴースト

2
sqlservr.exeである必要があります(ただし、確認するものはありません)。
rslite 2009年

1
これでうまくいきました。ポート番号は[sqlservr.exe]の上の行にあります。
Zane

私はSsms.exeの下でそれを見つけました
ThiagoPonte

49

ここに私が見つけた5つの方法があります:

  • 方法1:SQL Server構成マネージャー
  • 方法2:Windowsイベントビューア
  • 方法3:SQL Serverエラーログ
  • 方法4:sys.dm_exec_connections DMV
  • 方法5:xp_instance_regreadを使用してレジストリを読み取る

方法4:sys.dm_exec_connections DMV
これが最も簡単な方法だと思います... DMV
SQL Serverインスタンスの監視に使用できるサーバーの状態を返します。sys.dm_exec_connections DMVを使用して、SQL Serverインスタンスが以下の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/


1
私のために働いた。SQL Native Client構成のTCP / IPプロパティを試しましたが、デフォルトの1433に戻りました。しかし、SQL Serverネットワーク構成からTCP動的ポートを確認したところ、ポートは67244であることがわかりました。その後、そのポートに正常に接続できました。+1
ルーベン2014

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]"->したがって、この場合は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"(xxxxはサーバーのIPです)。この時点ですでに解決されています。

しかし、インスタンス名を渡してリモートで接続したかった(例: x.x.x.x\SQLExpressです。これは、SQLブラウザサービスが登場するときです。これは、インスタンス名を51118ポートに解決するユニットです。SQLブラウザーサービスはUDPポート1434(標準および静的)でリッスンするため、サーバーのファイアウォールでもこれを許可する必要がありました。

実際の答えを少し拡張するには、動的ポートが好きではなく、SQL Serverインスタンスに静的ポートが必要な場合は、このリンクを試してください


1
SQLブラウザーサービスの場合は+1。これは、SQL Expressがポート番号を処理する方法の鍵です
peterG

11

以下のような行のERROLOGログ。表示されない場合は、SQL Serverでリモートアクセスが有効になっていないか、TCP経由ではありません。これは、SQL Server構成マネージャーを使用して変更できます。

Server is listening on [ 192.128.3.2 <ipv4> 1433].

ログは表示されませんが、SQL Server Management Studioの[接続]で[このサーバーへのリモート接続を許可する]がオンになっています。したがって、私の理解は、リモート接続が許可されているということです。
ロイヤルゴースト

@ロイヤル:「リモート接続を許可する」に加えて、TCPプロトコルも有効にする必要があります。現在、サーバーはおそらくNPのみをリッスンしています
Remus Rusanu

SQLクエリを介してログを読み取るには、@ mortezaから以下の回答を参照してください xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

SQLEXPRESS2008のプロトコルでSQL Server構成マネージャーを使用してTCP / IPを有効にすることで問題を解決しました。サービスを再起動すると、「サーバーがリッスンしています」がERRORLOGファイルに表示されます


8

これを試してください(へのアクセスが必要ですsys.dm_exec_connections):

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

3
参考:SQLサーバーに開いている接続がない場合、何も表示されない可能性があります。
Tilo

6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[SQL Serverエラーログを読み取り、SQL Serverデータベースエンジンの名前付きインスタンスが使用するポートを特定する]


1
良いヒントをありがとうMorteza、SQL2012で上記を使用するとエラーが発生しますが、私のニーズには次のように十分です:XP_READERRORLOG 0、1、N'Server is listen '
mattpm

クエリでエラーが発生するコピーですが、これは機能します xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

あなたは、この2つのコマンドを使用することができますtasklistし、netstat -oan

Tasklist.exeに似てtaskmgr.exeいますが、テキストモードです。

tasklist.exetaskmgr.exe、あなたはのPIDを取得することができますsqlservr.exe

を使用する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


5

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

なぜこれが反対票だったのかわからない、それは即座の答えを与えませんが、あなたに答えに加えてすごいことを与えます。これを便利なクエリのリストに追加します。
トニー・

クエリのように、接続が開いていない/確立されていない場合も表示されないようです。
Tilo、2014

4

これは、ポートスキャンを介して行うこともできます。これは、リモートサーバーへの管理者アクセス権がない場合に可能な唯一の方法です。

Nmap(http://nmap.org/zenmap/)を使用して「強力なTCPスキャン」を実行すると、サーバー上のすべてのインスタンスに対して次のような結果が得られます。

[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 ではなく、コロンの代わりにコンマを使用します

  • Management Studioサーバー名: 10.0.0.1,49843
  • 接続文字列: Data Source=10.0.0.1,49843

しかしながら

  • JDBC接続文字列: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

これはSQL Server 2005-2012で機能します。アプリケーションのエラーログでイベントID = 26022を探します。これにより、SQLサーバーのポート番号と、アクセスが許可されているIPアドレスが表示されます。


1

上記の内容に加えて、SQLExpressをリモートで接続するには、TCPポートとUDPポートの両方を有効にする必要がありました。開発マシンには3つの異なるインスタンスがある1430-1435ため、TCPとUDPの両方を有効にします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.