จะค้นหา SQL Server ที่รันพอร์ตได้อย่างไร


94

ใช่ฉันอ่านสิ่งนี้จะค้นหาพอร์ตสำหรับ MS SQL Server 2008 ได้อย่างไร

ไม่มีโชค.

เทลเน็ต 1433

ส่งคืนการเชื่อมต่อล้มเหลวดังนั้นฉันต้องระบุพอร์ตอื่น

ฉันพยายามที่จะใช้

netstat -abn

แต่ฉันไม่เห็น sqlservr.exe หรือสิ่งที่คล้ายกันในรายการนี้

ทำไมหาพอร์ตนั้นยากจัง : /


คุณตรวจสอบว่า Sql Server Serviceทำงานอยู่หรือไม่?
Pilgerstorfer Franz

คำตอบ:


151

ลองสิ่งนี้:

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/


13
ส่งคืน 0 แถวที่ได้รับผลกระทบ
keram

1
คุณได้ลองใช้ฐานข้อมูลหลักแล้วรันนิกนี้หรือไม่
AnandPhadke

4
หากส่งคืน 0 แถว TCP / IP ถูกปิดใช้งาน เปิดใช้งาน TCP / IP ใน SQL Server Configuration Manager
Timo

เพียงเพื่อเพิ่ม - ในเวอร์ชันล่าสุดดูเหมือนว่า TCP จะถูกปิดใช้งานโดยค่าเริ่มต้นใน Developer Edition ในขณะที่ UDP เปิดอยู่
Charly

76

ง่ายมาก. จดบันทึก sqlsrvr.exe PID จาก taskmanager จากนั้นรันคำสั่งนี้:

netstat -ano | findstr *PID*

จะแสดงการเชื่อมต่อ TCP และ UDP ของเซิร์ฟเวอร์ SQL ของคุณ (รวมถึงพอร์ต) มาตรฐานคือ 1433 สำหรับ TCP และ 1434 สำหรับ UDP

ตัวอย่าง: ป้อนคำอธิบายภาพที่นี่


3
สิ่งนี้ใช้ได้ผลสำหรับฉัน "ย้อนกลับ": จำเป็นต้องค้นหาหมายเลขพอร์ต (ไม่ใช่ค่าเริ่มต้น) ของเครื่องระยะไกลที่ฉันเชื่อมต่อใน SSMS
leqid


40

หากคุณสามารถเริ่มตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ Sql> การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL> อินสแตนซ์ของคุณ> TCP / IP> คุณสมบัติ

ป้อนคำอธิบายภาพที่นี่


8

หากคุณเรียกใช้ "netstat -a -b -n" (จากพรอมต์คำสั่งที่ยกระดับ) และคุณไม่เห็น "sqlservr.exe" เลยแสดงว่าบริการ SQL Server ของคุณไม่ทำงานหรือไลบรารีเครือข่าย TCP / IP ปิดการใช้งาน

เรียกใช้ตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL (เริ่ม | โปรแกรมทั้งหมด | Microsoft SQL Server 2008 | เครื่องมือกำหนดค่า)

ไปที่ SQL Server Services ในบานหน้าต่างด้านขวาให้มองหา SQL Server () มันหยุด? ถ้าเป็นเช่นนั้นให้เริ่มต้น

ไปที่ SQL Server Network Configuration (หรือ SQL Server Network Configuration (32-bit) ตามความเหมาะสม) จากนั้น Protocols สำหรับ ในบานหน้าต่างด้านขวาให้มองหา "TCP / IP" ปิดการใช้งานหรือไม่ หากเป็นเช่นนั้นให้เปิดใช้งานจากนั้นเริ่มบริการ SQL Server ใหม่

โปรดทราบว่า Instance ID จะเป็น MSSQLSERVER สำหรับอินสแตนซ์เริ่มต้น

โปรดทราบด้วยว่าคุณไม่จำเป็นต้องเปิดใช้งานไลบรารีเครือข่าย TCP / IP เพื่อเชื่อมต่อไคลเอนต์กับบริการ ไคลเอนต์ยังสามารถเชื่อมต่อผ่านไลบรารีเครือข่ายหน่วยความจำที่ใช้ร่วมกัน (หากไคลเอนต์อยู่บนเครื่องเดียวกัน) หรือไลบรารีเครือข่ายเนมไปป์


3

อาจจะไม่ได้ใช้ TCP / IP

ดูที่ SQL Server Configuration Manager เพื่อดูว่ามันใช้โปรโตคอลอะไร


การกำหนดค่า SQL Native Client? TCP / IP ถูกเปิดใช้งาน แต่พอร์ตเริ่มต้นตั้งค่าเป็น 1433: /
keram

@keram No - สำหรับลูกค้า คุณต้องการใช้การกำหนดค่าเซิร์ฟเวอร์
podiluska

ฉันจะหา config นั้นได้ที่ไหน
keram


2

ในองค์กรของเราฉันไม่สามารถเข้าถึง MSSQL Server ได้ดังนั้นฉันจึงไม่สามารถเข้าถึงตารางระบบได้

สิ่งที่เหมาะกับฉันคือ:

  1. จับการรับส่งข้อมูลเครือข่ายWireshark(เรียกใช้ในฐานะผู้ดูแลระบบเลือกอินเทอร์เฟซเครือข่าย) ในขณะที่เปิดการเชื่อมต่อกับเซิร์ฟเวอร์
  2. ค้นหาที่อยู่ IP ด้วย ping
  3. กรองด้วย ip.dst == x.x.x.x

พอร์ตจะแสดงในคอลัมน์infoในรูปแบบsrc.port -> dst.port


2

นี่เป็นอีกสคริปต์ที่ฉันใช้:

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


1

ลองครั้งเดียว: -

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

1

กรุณาอธิบายคำตอบของคุณอย่างละเอียด
Harsh Wardhan

แม้ว่าลิงก์นี้อาจช่วยในการตอบคำถามของคุณ แต่คุณสามารถปรับปรุงคำตอบนี้ได้โดยนำส่วนสำคัญของลิงก์มาใส่ไว้ในคำตอบของคุณซึ่งทำให้แน่ใจว่าคำตอบของคุณยังคงเป็นคำตอบหากลิงก์ถูกเปลี่ยนหรือลบออก :)
WhatsThePoint

0

โปรแกรม SQL Server 2000 | MS SQL Server | ยูทิลิตี้เครือข่ายไคลเอนต์ | เลือก TCP_IP จากนั้นเลือก Properties

โปรแกรม SQL Server 2005 | เซิร์ฟเวอร์ SQL | ตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL | เลือกโปรโตคอลสำหรับ MSSQLSERVER หรือเลือก Client Protocols และคลิกขวาที่ TCP / IP


-1

บางทีอาจไม่ใช่ตัวเลือกที่ดีที่สุด แต่เป็นอีกวิธีหนึ่งคือการอ่าน Windows Registry ในเครื่องโฮสต์บนพรอมต์ 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 ของคุณ) ซึ่งหมายความว่าคุณต้อง RDP ก่อนใน SQL Server / Box / VM จากนั้นเรียกใช้รหัสนี้

HTH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.