ローカルマシンでMS SQL Server 2008を実行しています。私はデフォルトのポートが1433であることを知っていますが、このポートでどのようにリッスンしていないかがわかります。SQLはExpressエディションです。
ログ、SQL Server Management Studio、レジストリ、および拡張ストアドプロシージャを試して、ポートを見つけました。しかし、私はそれを見つけることができませんでした。私を助けてください。ありがとう。
ローカルマシンでMS SQL Server 2008を実行しています。私はデフォルトのポートが1433であることを知っていますが、このポートでどのようにリッスンしていないかがわかります。SQLはExpressエディションです。
ログ、SQL Server Management Studio、レジストリ、および拡張ストアドプロシージャを試して、ポートを見つけました。しかし、私はそれを見つけることができませんでした。私を助けてください。ありがとう。
回答:
Start
Windowsのボタンをクリックします。に行く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
。
接続によっては、ポート番号が異なる場合があります。
ここに私が見つけた5つの方法があります:
方法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/
リモート接続の作成に問題があり、ファイアウォールに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インスタンスに静的ポートが必要な場合は、このリンクを試してください。
以下のような行のERROLOGログ。表示されない場合は、SQL Serverでリモートアクセスが有効になっていないか、TCP経由ではありません。これは、SQL Server構成マネージャーを使用して変更できます。
Server is listening on [ 192.128.3.2 <ipv4> 1433].
xp_readerrorlog 0, 1, N'Server is listening on'
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc'
GO
[SQL Serverエラーログを読み取り、SQL Serverデータベースエンジンの名前付きインスタンスが使用するポートを特定する]
xp_readerrorlog 0, 1, N'Server is listening on'
あなたは、この2つのコマンドを使用することができますtasklist
し、netstat -oan
Tasklist.exe
に似てtaskmgr.exe
いますが、テキストモードです。
tasklist.exe
かtaskmgr.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
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
これは、ポートスキャンを介して行うこともできます。これは、リモートサーバーへの管理者アクセス権がない場合に可能な唯一の方法です。
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 ではなく、コロンの代わりにコンマを使用します。
10.0.0.1,49843
Data Source=10.0.0.1,49843
しかしながら
jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE