Làm cách nào để tìm cổng cho MS SQL Server 2008?


107

Tôi đang chạy MS SQL Server 2008 trên máy cục bộ của mình. Tôi biết rằng cổng mặc định là 1433 nhưng một số cách nó không nghe ở cổng này. SQL là một phiên bản Express.

Tôi đã thử nhật ký, SQL Server Management Studio, sổ đăng ký và quy trình được lưu trữ mở rộng để tìm cổng. Nhưng, tôi không thể tìm thấy nó. Làm ơn giúp tôi. Cảm ơn.


Tôi đang cập nhật câu hỏi với các tài nguyên khác mà tôi đã xem để tôi có dấu trang của chúng và những người khác cũng có thể sử dụng chúng. blogs.msdn.com/sql_protocols/archive/2008/11/05/... decipherinfosys.wordpress.com/2008/01/02/... dumbledad.wordpress.com/2008/07/09/...
royalghost

Tôi đang sử dụng Chế độ xem TCP để xem cổng mà nó đang chạy. Tôi ngạc nhiên khi thấy máy chủ đang sử dụng một cổng động thay vì 1433 ngay cả sau khi cài đặt nó làm phiên bản mặc định. Tôi cũng đã hủy cài đặt phiên bản express và cài đặt phiên bản đầy đủ mà sau đó chỉ tôi có thể thấy quá trình dưới dạng sqlservr.exe: 5272. Và, giả định của tôi là nó đang nghe ở cổng 5272.
royalghost

Câu trả lời:


140

Nhấp vào Startnút trong Windows. Đi đếnAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Nhấp vào SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP nhấp đúp (Nhấp chuột phải chọn Properties) vào TCP/IP.

Bạn sẽ tìm thấy Default Port 1433.

Tùy thuộc vào kết nối, số cổng có thể khác nhau.


Trên máy tính của tôi, đang chạy Windows 10 và đã cài đặt SQL Server 2012 Express, Trình quản lý Cấu hình SQL Server không được liệt kê trong menu bắt đầu của Windows nhưng có thể tìm thấy trong phần đính vào MMC Quản lý Máy tính trong nhóm Dịch vụ và Ứng dụng . Cổng động cũng không nằm trong mục 'Cấu hình máy khách gốc SQL' (đối với tôi là phiên bản "11.0") mà nằm trong mục Cấu hình mạng máy chủ SQL (và trên tab Địa chỉ IP của cửa sổ thuộc tính giao thức TCP / IP , tại dưới cùng, trong cài đặt Cổng động TCP ).
Kenny Evitt

Câu trả lời này đề cập đến cổng máy khách, không phải cổng máy chủ, là cổng đang được hỏi trong câu hỏi ban đầu. Câu trả lời từ @ Brothers28 dưới đây chính xác hơn.
Slogmeister Extraordinaire,

52

Bạn cũng có thể xem xét với một

netstat -abn

Nó cung cấp cho các cổng có ứng dụng tương ứng giúp chúng luôn mở.

Chỉnh sửa : hoặc TCPView .


Bạn có thể cho tôi biết MS SQL Server 2008 được đặt tên là ứng dụng gì không?
royalghost

2
Nó phải là sqlservr.exe (Mặc dù vậy, tôi không có cái nào để kiểm tra).
rslite

1
Điều này đã làm việc cho tôi. Số cổng ở dòng trên [sqlservr.exe].
Zane

Tôi tìm thấy nó trong Ssms.exe
ThiagoPonte

49

Đây là 5 phương pháp tôi tìm thấy:

  • Phương pháp 1: Trình quản lý cấu hình SQL Server
  • Phương pháp 2: Trình xem sự kiện Windows
  • Phương pháp 3: Nhật ký lỗi SQL Server
  • Phương pháp 4: sys.dm_exec_connections DMV
  • Phương pháp 5: Đọc sổ đăng ký bằng xp_instance_regread

Phương pháp 4: sys.dm_exec_connections DMV
Tôi nghĩ đây là cách dễ nhất ...
DMV trả về trạng thái máy chủ có thể được sử dụng để theo dõi SQL Server Instance. Chúng tôi có thể sử dụng sys.dm_exec_connections DMV để xác định số cổng SQL Server Instance đang nghe bằng cách sử dụng mã T-SQL bên dưới:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID
GO

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Phương pháp 1: Trình quản lý cấu hình SQL Server

Bước 1. Nhấp vào Bắt đầu> Tất cả chương trình> Microsoft SQL Server 2012> Công cụ cấu hình> Trình quản lý cấu hình SQL Server

Bước 2. Đi tới Trình quản lý cấu hình SQL Server> Cấu hình mạng SQL Server> Giao thức cho

Bước 3. Nhấp chuột phải vào TCP / IP và chọn Thuộc tính

nhập mô tả hình ảnh ở đây

Bước 4. Trong hộp thoại Thuộc tính TCP / IP, chuyển đến tab Địa chỉ IP và cuộn xuống nhóm IPAll.

nhập mô tả hình ảnh ở đây

Nếu SQL Server nếu được định cấu hình để chạy trên một cổng tĩnh, nó sẽ có sẵn trong hộp văn bản Cổng TCP và nếu nó được định cấu hình trên cổng động thì cổng hiện tại sẽ có sẵn trong hộp văn bản Cổng Động TCP. Đây là phiên bản của tôi đang nghe trên cổng số 61499.

Các phương pháp khác bạn có thể tìm thấy tại đây: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
Đã làm cho tôi. Tôi đã thử các thuộc tính TCP / IP od SQL Native Client Configuration và điều đó đang trả về mặc định 1433. Nhưng khi tôi kiểm tra các cổng Động TCP từ Cấu hình mạng SQL Server. Tôi tìm thấy cổng là 67244. Và sau đó tôi đã có thể kết nối thành công với cổng đó. 1
Reuben

17

Tôi gặp phải điều này vì tôi vừa gặp sự cố khi tạo kết nối từ xa và không hiểu tại sao việc thiết lập cổng 1433 trong tường lửa không hoạt động. Cuối cùng thì tôi cũng có toàn bộ hình ảnh bây giờ, vì vậy tôi nghĩ tôi nên chia sẻ.

Trước hết là phải kích hoạt "TCP / IP" bằng Trình quản lý cấu hình máy chủ SQL trong Giao thức cho SQLEXPRESS!

Khi một phiên bản đã đặt tên được sử dụng ("SQLExpress" trong trường hợp này), phiên bản này sẽ lắng nghe trên một cổng động. Để tìm cổng động này, bạn có một số tùy chọn; đến tên một vài:

  • kiểm tra ERRORLOGSQL Server nằm trong '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(bên trong bạn sẽ tìm thấy một dòng tương tự như sau: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> vì vậy 51118 là cổng động trong trường hợp này.

  • kiểm tra sổ đăng ký:, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAllcho trường hợp của tôi TcpDynamicPorts=51118.

    Chỉnh sửa : {MSSQL instance name}là một cái gì đó giống như:, MSSQL10_50.SQLEXPRESSkhông chỉSQLEXPRESS

Tất nhiên, việc cho phép cổng TCP này trong tường lửa và tạo kết nối từ xa bằng cách chuyển vào: "x.x.x.x,51118"(trong đó xxxx là ip máy chủ) đã giải quyết được vấn đề tại thời điểm này.

Nhưng sau đó tôi muốn kết nối từ xa bằng cách chuyển vào tên phiên bản (ví dụ x.x.x.x\SQLExpress:). Đây là lúc dịch vụ Trình duyệt SQL phát huy tác dụng. Đây là đơn vị phân giải tên cá thể thành cổng 51118. Dịch vụ Trình duyệt SQL lắng nghe trên cổng UDP 1434 (tiêu chuẩn và tĩnh), vì vậy tôi phải cho phép điều này cũng trong tường lửa của máy chủ.

Để mở rộng một chút câu trả lời thực tế: nếu ai đó không thích cổng động và muốn có cổng tĩnh cho phiên bản SQL Server của mình, hãy thử liên kết này .


1
+1 cho dịch vụ Trình duyệt SQL. Đây là chìa khóa để cách SQL Express làm việc với những con số cảng
peterG

11

Trong nhật ký ERROLOG cho một dòng như dưới đây. Nếu bạn không thấy nó, SQL Server không được kích hoạt để truy cập từ xa hoặc nó không phải là thông qua TCP. Bạn có thể thay đổi điều này thông qua Trình quản lý cấu hình máy chủ SQL.

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

Tôi không thấy nhật ký đó nhưng trên SQL Server Management Studio trong mục Kết nối "Cho phép kết nối từ xa với máy chủ này" được chọn. Do đó, tôi hiểu rằng kết nối từ xa được cho phép.
royalghost

@royal: Ngoài 'cho phép kết nối từ xa', bạn cũng phải bật giao thức TCP. Ngay bây giờ các máy chủ có lẽ chỉ nghe NP
Remus Rusanu

xem câu trả lời bên dưới từ @morteza để đọc nhật ký qua truy vấn SQL xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

Tôi đã giải quyết sự cố bằng cách bật TCP / IP bằng Trình quản lý cấu hình máy chủ SQL trong Giao thức cho SQLEXPRESS2008, tôi đã khởi động lại dịch vụ và bây giờ "Máy chủ đang bật" hiển thị trong tệp ERRORLOG


8

Hãy thử điều này (yêu cầu quyền truy cập vào sys.dm_exec_connections):

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

3
FYI: nếu máy chủ SQL không có kết nối mở, nó có thể sẽ không hiển thị bất cứ điều gì.
Tilo

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

[Xác định cổng được sử dụng bởi Phiên bản có tên của Công cụ cơ sở dữ liệu SQL Server bằng cách đọc nhật ký lỗi máy chủ SQL]


1
nhờ mũi Morteza tốt, tôi nhận được một lỗi bằng cách sử dụng trên trên SQL2012 nhưng cũng đủ sau cho nhu cầu của tôi: XP_READERRORLOG 0, 1, N'Server đang lắng nghe'
mattpm

Sao chép rằng get lỗi với truy vấn của bạn, nhưng tác phẩm này, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

Bạn có thể sử dụng hai lệnh này: tasklistnetstat -oan

Tasklist.exegiống như taskmgr.exenhưng ở chế độ văn bản.

Với tasklist.exehoặc taskmgr.exebạn có thể lấy PID củasqlservr.exe

Với netstat -oan, nó hiển thị một PID kết nối và bạn có thể lọc nó.

Thí dụ:

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

Trong ví dụ này, cổng SQLServer là 1280

Trích từ: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html


5

Tôi sử dụng tập lệnh sau trong 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

Không chắc tại sao điều này bị phản đối, nó không đưa ra câu trả lời ngay lập tức nhưng nó cung cấp cho bạn câu trả lời cùng với nhiều hơn thế nữa. Thêm điều này vào danh sách các truy vấn hữu ích của tôi.
Tony

như truy vấn rất nhiều, nó cũng dường như không hiển thị nếu không có kết nối nào được mở / thiết lập.
Tilo

4

Điều này cũng có thể được thực hiện thông qua quét cổng, đây là phương pháp khả thi duy nhất nếu bạn không có quyền truy cập quản trị vào máy chủ từ xa.

Sử dụng Nmap ( http://nmap.org/zenmap/ ) để thực hiện "Quét TCP cường độ cao" sẽ cung cấp cho bạn kết quả như thế này cho tất cả các trường hợp trên máy chủ:

[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

Lưu ý quan trọng: Để kiểm tra với trình phân tích truy vấn hoặc MS SQL Server Management Studio, bạn phải tạo tên máy chủ và cổng của mình khác với cách bạn thường kết nối với một cổng, chẳng hạn như qua HTTP, sử dụng dấu phẩy thay vì dấu hai chấm .

  • Tên máy chủ Management Studio: 10.0.0.1,49843
  • Chuỗi kết nối: Data Source=10.0.0.1,49843

Tuy nhiên

  • Chuỗi kết nối JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

Điều này hoạt động cho SQL Server 2005 - 2012. Tìm sự kiện id = 26022 trong nhật ký lỗi bên dưới ứng dụng. Điều đó sẽ hiển thị số cổng của máy chủ sql cũng như những địa chỉ ip nào được phép truy cập.


1

Ngoài những gì được liệt kê ở trên, tôi đã phải bật cả cổng TCP và UDP để SQLExpress kết nối từ xa. Vì tôi có ba phiên bản khác nhau trên máy phát triển của mình, tôi bật 1430-1435cho cả TCP và UDP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.