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 View를 사용하여 실행중인 포트를 확인하고 있습니다. 기본 인스턴스로 설치 한 후에도 서버가 1433 대신 동적 포트를 사용하고 있다는 사실에 놀랐습니다. 또한 Express Edition을 제거하고 정식 버전을 설치 한 후 프로세스를 sqlservr.exe : 5272로 볼 수 있습니다. 그리고 내 가정은 포트 5272에서 수신 대기하는 것입니다.
royalghost

답변:


140

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 동적 포트 설정에서 맨 아래 ).
Kenny Evitt

이 답변은 원래 질문에서 묻는 서버 포트가 아니라 클라이언트 포트를 나타냅니다. 아래 @ brothers28의 답변이 더 정확합니다.
Slogmeister Extraordinaire

52

당신은 또한 볼 수 있습니다

netstat -abn

열린 상태로 유지하는 해당 응용 프로그램과 함께 포트를 제공합니다.

편집 : 또는 TCPView .


응용 프로그램으로 명명 된 MS SQL Server 2008의 이름을 알려주시겠습니까?
royalghost

2
sqlservr.exe 여야합니다 (그래도 확인할 항목이 없습니다).
rslite

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를 사용하여 아래 T-SQL 코드를 사용하여 SQL Server 인스턴스가 수신 대기중인 포트 번호를 식별 할 수 있습니다 .

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 네이티브 클라이언트 구성에서 TCP / IP 속성을 시도했는데 기본값 1433이 반환되었습니다.하지만 SQL Server 네트워크 구성에서 TCP 동적 포트를 확인했을 때. 포트가 67244라는 것을 알았습니다. 그 후 해당 포트에 성공적으로 연결할 수있었습니다. +1
Reuben

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 Browser 서비스가 시작될 때입니다. 인스턴스 이름을 51118 포트로 해석하는 장치입니다. SQL Browser 서비스는 UDP 포트 1434 (표준 및 정적)에서 수신 대기하므로 서버의 방화벽에서도이를 허용해야했습니다.

실제 답변을 조금 확장하려면 다른 사람이 동적 포트를 좋아하지 않고 SQL Server 인스턴스에 대한 정적 포트를 원하는 경우이 링크를 시도해야 합니다 .


1
SQL Browser 서비스의 경우 +1. 이것이 SQL Express가 포트 번호로 작동하는 방식의 핵심입니다
peterG 2014 년

11

ERROLOG 로그에서 다음과 같은 줄을 찾습니다. 표시되지 않으면 SQL Server가 원격 액세스를 사용하도록 설정되어 있지 않거나 TCP를 통하지 않습니다. SQL Server 구성 관리자를 통해이를 변경할 수 있습니다.

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

해당 로그는 표시되지 않지만 연결 아래의 SQL Server Management Studio에서 "이 서버에 대한 원격 연결 허용"이 선택되어 있습니다. 따라서 내 이해는 원격 연결이 허용된다는 것입니다.
royalghost

@royal : '원격 연결 허용'외에도 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 서버에 열린 연결이 없으면 아무 것도 표시하지 않을 것입니다.
는 Tila

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

이 두 가지 명령을 사용할 수 있습니다 tasklistnetstat -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


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

왜 이것이 비추천인지 확실하지 않고 즉각적인 답변을 제공하지는 않지만 답변과 soooo를 훨씬 더 많이 제공합니다. 유용한 쿼리 목록에 이것을 추가합니다.
Tony

쿼리와 마찬가지로 연결이 열려 있거나 설정되어 있지 않으면 표시되지 않는 것 같습니다.
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 포트를 모두 활성화해야했습니다. 개발 머신에 세 개의 다른 인스턴스 1430-1435가 있으므로 TCP와 UDP를 모두 활성화 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.