실행 중인 SQL Server 포트를 찾는 방법은 무엇입니까?
예, 이 문서를 읽었습니다. MS SQL Server 2008용 포트를 찾는 방법은 무엇입니까?
운이 없습니다.
텔넷 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/
매우 간단합니다. 태스크 관리자의 sqlsrvr.exe PID를 기록한 다음 다음 명령을 실행합니다.
netstat -ano | findstr *PID*
SQL 서버(포트 포함)의 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 구성 관리자 > SQL Server 네트워크 구성 > 사용자 인스턴스 > 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비트))으로 이동한 다음 프로토콜 for. 오른쪽 창에서 "TCP/IP"를 찾습니다.사용할 수 없습니까?그런 경우 이를 활성화한 다음 SQL 서버 서비스를 다시 시작합니다.
인스턴스 ID는 기본 인스턴스의 MSSQLSERVER가 됩니다.
또한 클라이언트를 서비스에 연결하기 위해 TCP/IP 네트워크 라이브러리를 활성화할 필요가 없습니다.클라이언트는 공유 메모리 네트워크 라이브러리(클라이언트가 동일한 컴퓨터에 있는 경우) 또는 명명된 파이프 네트워크 라이브러리를 통해 연결할 수도 있습니다.
TCP/IP를 사용하지 않는 것일 수 있습니다.
SQL Server 구성 관리자에서 사용 중인 프로토콜을 확인합니다.
한 번 시도:-
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
SQL Server Management(sqlservermanager15.msc)를 검색하지 않으려면 데이터베이스에서 다음 쿼리를 실행합니다(예: sqlcmd 또는 ssms).
SELECT * FROM [sys].[dm_tcp_listener_states]
| listener_id | ip_address | is_sig4 | 항구 | 유형 | type_message | 주 | state_state_s | start_time |
|---|---|---|---|---|---|---|---|---|
| 1 | ::1 | 거짓의 | 1433 | 0 | TSQL | 0 | 온라인. | 2021-01-01 00:00:00.000000 |
| 2 | 127.0.0.1 | 진실의 | 1433 | 0 | TSQL | 0 | 온라인. | 2021-01-01 00:00:00.000000 |
이것을 지적해 준 @vladimir-bashutin에게 감사드립니다.다음은 또 다른 예입니다.
SELECT [name]
,[protocol_desc]
,[type_desc]
,[state]
,[state_desc]
,[is_admin_endpoint]
FROM [master].[sys].[endpoints]
| 이름. | protocol_interval | type_message | 주 | state_state_s | is_admin_proxy |
|---|---|---|---|---|---|
| TSQL 로컬 컴퓨터 | 공유_메모리 | TSQL | 0 | 시작된 | 거짓의 |
| TSQL 명명된 파이프 | NAMED_PIPES | TSQL | 0 | 시작된 | 거짓의 |
| TSQL 기본 TCP | TCP | TSQL | 0 | 시작된 | 거짓의 |
| TSQL 기본 VIA | 비아 | TSQL | 0 | 시작된 | 거짓의 |
이제 포트와 프로토콜을 사용할 수 있습니다.이러한 시스템 테이블에 액세스할 수 없는 경우 https://github.com/adzm/ssrpc 과 같은 SSRP 클라이언트를 사용해 보십시오.
우리 회사에서는 MSSQL 서버에 액세스할 수 없기 때문에 시스템 테이블에 액세스할 수 없습니다.
저에게 맞는 것은 다음과 같습니다.
- 트래픽 네트픽
Wireshark서버에 대한 연결을 여는 동안 관리자로 실행되고 네트워크 인터페이스를 선택합니다. - IP로
ping - .
ip.dst == x.x.x.x
는 포가열표니다 됩니다.infosrc.port -> dst.port
select * from sys.dm_tcp_listener_states
더 보기: https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-tcp-listener-states-transact-sql?view=sql-server-2017
구성 관리자 > SQL 서버 네트워크 구성 > MSSQL SERVER 프로토콜 > TCP/IP 속성을 사용하여 프로토콜을 활성화합니다.
SQL Server 2000 프로그램 | MS SQL Server | 클라이언트 네트워크 유틸리티 | TCP_ 선택IP 후 속성
SQL Server 2005 프로그램 | SQL Server | SQL Server 구성 관리자 | MSSQL SERVER 프로토콜을 선택하거나 클라이언트 프로토콜을 선택하고 TCP/IP를 마우스 오른쪽 버튼으로 클릭합니다.
PowerShell에서 이 포트를 사용하여 인스턴스가 사용 중인 포트를 확인할 수 있습니다.
을 변경할 수 .MSSQLSERVER사용자 자신의 인스턴스 이름으로.
$wmi = New-Object 'Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer' localhost
$tcp = $wmi.ServerInstances['MSSQLSERVER'].ServerProtocols['Tcp']
$ipAll = $tcp.IPAddresses | where { $_.Name -eq "IPAll" }
write-host ($ipAll.IPAddressProperties.value)
제 경우 서버가 원격이었고 명명된 인스턴스를 사용했습니다.SQL Browse 서비스는 이를 클라이언트의 포트로 변환합니다.SQL Management Studio를 통해 연결만 하면 됩니다.서버 이름의 nslookup을 수행하여 해당 IP를 가져옵니다.그러면 다음을 수행합니다.
netstat -ano | findstr {ip}
목록에 동일한 포트 번호를 사용하는 원격 연결이 몇 개 있어야 합니다.서버가 동적 포트를 사용하도록 구성된 경우 변경됩니다.
최상의 옵션은 아니지만 다른 방법은 호스트 시스템에서 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."
이 PowerShell 스크립트를 호스트 서버(SQL 인스턴스/SQL Server 설치 호스트)에서 실행해야 합니다. 즉, 먼저 SQL Server/Box/VM에 RDP를 입력한 다음 이 코드를 실행해야 합니다.
HTH
언급URL : https://stackoverflow.com/questions/12297475/how-to-find-sql-server-running-port
'programing' 카테고리의 다른 글
| WPF GUI에서 비동기 작업을 실행하고 상호 작용하는 방법 (0) | 2023.04.29 |
|---|---|
| Ubuntu에 설치된 MongoDB 버전 (0) | 2023.04.29 |
| C#에서 Excel 열 문자를 가장 빠르게 생성하는 기능 (0) | 2023.04.29 |
| 손상된 WPF 데이터 바인딩을 탐지하는 방법은 무엇입니까? (0) | 2023.04.29 |
| Azure Max 지출 한도 또는 비용 CAP $ 금액을 설정하는 방법은 무엇입니까? (0) | 2023.04.29 |
