2009-10-05 36 views
95

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ác cổng mặc định là 1433 nhưng một số cách nó không phải là lắng nghe tại cảng này. SQL là một phiên bản Express.Cách tìm cổng cho MS SQL Server 2008?

Tôi đã thử nhật ký, SQL Server Management Studio, đă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.

+0

Tôi cập nhật các câu hỏi với các nguồn lực khác Tôi nhìn vì vậy mà tôi có booksmarks của họ và những người khác cũng có thể sử dụng chúng. http://blogs.msdn.com/sql_protocols/archive/2008/11/05/tcp-listening-ports-and-endpoint-ports-behavior.aspx http://decipherinfosys.wordpress.com/2008/01/02/finding-the-port-number-cho-a-cụ-sql-server-instance/ http://dumbledad.wordpress.com/2008/07/09/getting-processing-working-with -sql-server-2008/ – royalGhost

+0

Tôi đang sử dụng Giao diện TCP để xem cổng đang chạy. Tôi ngạc nhiên khi thấy rằng máy chủ đang sử dụng 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 chưa cài đặt phiên bản nhanh và cài đặt phiên bản đầy đủ mà sau đó tôi chỉ có thể xem quy trình là sqlservr.exe: 5272. Và, giả định của tôi là nó đang nghe ở cổng 5272. – royalGhost

Trả lời

11

Trong nhật ký ERROLOG cho một dòng như dưới đây. Nếu bạn không nhìn thấy nó, SQL Server không được kích hoạt để truy cập từ xa, hoặc nó không chỉ 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 SQL Server.

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

Tôi không thấy nhật ký đó nhưng trên SQL Server Management Studio trong phần Kết nối "Cho phép kết nối từ xa đến máy chủ này" được chọn. Do đó, sự hiểu biết của tôi là kết nối từ xa được cho phép. – royalGhost

+0

@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ờ máy chủ có lẽ chỉ nghe NP –

+0

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

46

Bạn cũng có thể tìm kiếm với một

netstat -abn 

Nó cung cấp cho các cổng với các ứng dụng tương ứng mà giữ họ mở.

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

+0

Bạn có thể cho tôi biết dưới tên là MS SQL Server 2008 không được đặt tên như một ứng dụng? – royalGhost

+2

Nó nên là sqlservr.exe (Tôi không có một để kiểm tra mặc dù). – rslite

+1

Điều này làm việc cho tôi. Số cổng nằm trên dòng * phía trên * [sqlservr.exe]. – Zane

8

tôi giải quyết vấn đề bằng cách cho phép các giao thức TCP/IP bằng cách sử dụng Virtual Machine Manager SQL Server dưới giao thức cho SQLEXPRESS2008, tôi khởi động lại dịch vụ và bây giờ là "Server đang lắng nghe trên" xuất hiện trong các tập tin ERRORLOG

129

Bấm vào Start trong Windows. Tới All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Bấm vào SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP double click (Nhấp chuột phải chọn Properties) trên 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ể thay đổi.

+0

Trên máy tính của tôi, chạy Windows 10 và với SQL Server 2012 Express được cài đặt, * Trình quản lý Cấu hình SQL Server * không được liệt kê trong trình đơn khởi động Windows nhưng có thể được tìm thấy trong phần * Quản lý máy tính * MMC theo 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' (là phiên bản "11.0" cho tôi) nhưng trong mục * Cấu hình mạng máy chủ SQL * (và trên tab * Địa chỉ IP * của * TCP/IP * cửa sổ thuộc tính giao thức, ở dưới cùng, trong thiết lập * Cổng động TCP *). –

1

This hoạt động cho SQL Server 2005 - 2012. Tìm id sự kiện = 26022 trong nhật ký lỗi trong ứng dụng. Điều đó sẽ hiển thị số cổng của máy chủ sql cũng như đị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 cho SQLExpress để kết nối từ xa. Bởi vì tôi có ba trường hợp khác nhau trên máy phát triển của mình, tôi bật 1430-1435 cho cả TCP và UDP.

17

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

Trước hết là phải bật "TCP/IP" bằng Trình quản lý cấu hình SQL Server trong Giao thức cho SQLEXPRESS!

Khi một cá thể được đặt tên được sử dụng ("SQLExpress" trong trường hợp này), điều này sẽ lắng nghe trên một cổng động. Để tìm cổng động này, bạn có vài lựa chọn; đến tên một vài ví dụ:

  • kiểm tra ERRORLOG của SQL Server đặt tại '{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]" -> quá 51.118 là cổng năng động trong trường hợp này.

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

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

Tất nhiên, cho phép cổng TCP này trong tường lửa và tạo ra một kết nối từ xa bằng cách thông qua tại: "x.x.x.x,51118" (trong đó xxxx là máy chủ ip) đã giải quyết nó vào 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 cá thể (ví dụ: x.x.x.x\SQLExpress). Đây là khi dịch vụ trình duyệt SQL đi vào hoạt độ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 & 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 người khác 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ử số link này.

+1

+1 cho dịch vụ Trình duyệt SQL. Đây là chìa khóa để làm thế nào SQL Express làm việc với số cổng – peterG

41

Dưới đây là 5 methodes tôi tìm thấy:

  • Phương pháp 1: SQL Server Configuration Manager
  • Phương pháp 2: Windows Event Viewer
  • Phương pháp 3: SQL Server Error Logs
  • Phương pháp 4: sys .dm_exec_connections DMV
  • Phương pháp 5: Đọc đăng ký sử dụng xp_instance_regread

Phương pháp 4: sys.dm_exec_connections DMV
Tôi nghĩ rằng đây là gần như là cách dễ nhất ...
DMVs trở lại trạng thái máy chủ có thể được sử dụng để giám sát SQL Server Instance. Chúng ta có thể sử dụng sys.dm_exec_connections DMV để xác định số cổng SQL Server Instance đang lắng nghe trên sử dụng dưới mã 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) 

Phương pháp 1: SQL Server Configuration Manager

Bước 1. Nhấn Start> 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 trên giao thức TCP/IP và chọn Properties

enter image description here

Bước 4. Trong TCP/IP hộp thoại Properties, vào tab IP Addresses và cuộn xuống để nhóm IPAll.

enter image description here

Nếu SQL Server nếu cấu hình để chạy trên một cổng tĩnh nó sẽ có sẵn ở Port TCP textbox, và nếu nó được cấu hình trên cổng động sau đó cảng hiện nay sẽ có sẵn trong TCP động Cổng textbox. Đây dụ tôi đang lắng nghe trên số cổng 61499.

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

+1

Làm việc cho tôi. Tôi đã thử các thuộc tính TCP/IP od SQL Native Client Configuration và đã được trả về mặc định 1433. Nhưng khi tôi kiểm tra các cổng TCP Dynamic 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

4

tôi sử dụng kịch bản sau đây 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 
+0

Không chắc chắn tại sao điều này lại bị giảm giá, nó không đưa ra câu trả lời ngay lập tức nhưng nó mang lại cho bạn câu trả lời và nhiều hơn 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

+0

giống như truy vấn rất nhiều, có vẻ như nó không hiển thị nếu không có kết nối nào được mở/được thiết lập. – 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 sử dụng bởi tên Ví dụ về Cơ sở dữ liệu SQL Server bằng cách đọc Nhật ký lỗi SQL Server]

+1

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

+0

Bạn được chào đón :) – Morteza

+0

Sao chép có lỗi với truy vấn của bạn nhưng điều này làm việc, 'xp_readerrorlog 0, 1, N'Server đang nghe on'' – Tilo

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

+0

Nếu tôi đưa ra lệnh trên, nó không hiển thị bất cứ điều gì –

4

Điều này cũng có thể được thực hiện thông qua quét cổng, là phương pháp duy nhất có thể 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 một "Intense TCP quét" sẽ cung cấp cho bạn kết quả như thế này cho tất 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 máy 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 khác với thông thường bạn kết nối với cổng, qua HTTP chẳng hạn, bằng dấu phẩy thay vì dấu hai chấm.

  • Management Studio Name Server: 10.0.0.1,49843
  • Connection String: Data Source=10.0.0.1,49843

tuy nhiên

  • JDBC Connection String: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
4

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

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

Với tasklist.exe hoặc taskmgr.exe bạn có thể có được một PID của sqlservr.exe

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

Ví 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

Các vấn đề liên quan