วิธีง่ายๆในการตรวจสอบการเชื่อมต่อกับ SQL Server จากไคลเอนต์


18

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

มีวิธีที่ง่าย (หมายความว่าไม่ต้องติดตั้งซอฟต์แวร์ของ บริษัท อื่น) เพื่อทำสิ่งนี้โดยใช้เครื่องมือระบบเริ่มต้นของ Windows หรือไม่ บางทีใช้สคริปต์หรือแอปพลิเคชันเครือข่าย


ในสมุดบันทึกของฉันฉันสามารถสร้างการเชื่อมต่อ odbc sqlserver และทดสอบการเข้าถึง sqlserver แต่ฉันไม่ได้ถ้าไดรเวอร์ odc sqlserver สามารถพบได้ในไคลเอนต์ทั้งหมดที่กำหนดค่าให้เข้าถึง sqlserver แต่ถ้ามันสามารถพบได้นี่จะเป็นการทดสอบครั้งต่อไปหลังจากตรวจสอบการเข้าถึงของ sqlserver prot ของเซิร์ฟเวอร์กับ telnet
— miracle173

คำตอบ:


15

หากเซิร์ฟเวอร์ใช้ TCP / IP วิธีที่ง่ายคือเพียง telnet ไปยังพอร์ต SQL Server และดูว่าเชื่อมต่อหรือไม่ โดยค่าเริ่มต้นนั่นคือพอร์ต 1433 ดังนั้นจึงควรใช้งานได้:

telnet servername 1433

ซึ่งอาจจะเหมาะสมในกรณีส่วนใหญ่

หากใช้พอร์ตอื่นหรือพอร์ตไดนามิก (โดยทั่วไปกับอินสแตนซ์ที่มีชื่อ) คุณจะต้องกำหนดพอร์ตที่กำลังฟังอยู่ ตรวจสอบเครื่องมือจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL เพื่อดูว่าเป็นพอร์ตเฉพาะหรือพอร์ตแบบไดนามิก หากใช้พอร์ตแบบไดนามิกหากคุณไม่มีหลายอินสแตนซ์บนเซิร์ฟเวอร์netstat -abnอาจเป็นวิธีที่ง่ายที่สุดในการค้นหาสิ่งที่ใช้ มิฉะนั้นขุดผ่านบันทึกเหตุการณ์ของ Windows หรือบันทึกข้อผิดพลาด SQL Server สำหรับข้อความที่ระบุว่าพอร์ตใดที่ใช้งานอยู่โดยอินสแตนซ์

หาก SQL Server ใช้ Named Pipes ฉันเชื่อว่าถ้าคุณสามารถเข้าถึงการแชร์บนเครื่องคุณมีการเชื่อมต่อเครือข่ายที่เพียงพอ บทความนี้บอกว่าคุณสามารถไปต่อและลองเชื่อมต่อกับส่วนแบ่ง IPC $:

http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx

net use \\servername\IPC$

นั่นเขียนไว้สำหรับ SQL Server 2000 แต่ฉันไม่คิดว่ามันจะมีการเปลี่ยนแปลงมากนักหากเลย


2
ไม่เห็นว่าลูกค้าสามารถ "เชื่อมต่อกับอินสแตนซ์ของ SQL Server" ได้หรือไม่ นี่เป็นเพียงการทดสอบเพื่อดูว่าพอร์ตกำลังฟังอยู่หรือไม่
— Thomas Stringer

4
... ซึ่งจะเห็นว่าระบบไคลเอนต์ "สามารถเชื่อมต่อกับอินสแตนซ์ของ SQL Server ได้หรือไม่ขึ้นอยู่กับแอปพลิเคชันที่อาจไม่สามารถเชื่อมต่อกับ SQL Server ได้" อะไรก็ตามที่นอกเหนือจากการเชื่อมต่อเครือข่ายนั้นเกี่ยวข้องกับปัญหาแอปพลิเคชัน
— db2

22

วิธีทดสอบอย่างง่ายสำหรับการเชื่อมต่อ SQL คือการสร้างไฟล์ข้อความเปล่าโดยมีนามสกุลไฟล์เป็น "UDL" คุณสามารถสร้างได้ใน Notepad และมันสามารถมีชื่ออะไรก็ได้ ฉันใช้ "TestSQL.UDL"

บันทึกไว้บนเดสก์ท็อปของพีซี windows และคลิกสองครั้ง

กล่องโต้ตอบ "คุณสมบัติลิงค์ข้อมูล" จะปรากฏขึ้นซึ่งคุณสามารถป้อนที่อยู่ IP ของเซิร์ฟเวอร์ SQL และชื่อผู้ใช้และรหัสผ่านของ SQL

คลิกปุ่ม "ทดสอบการเชื่อมต่อ" เพื่อดูว่าคุณสามารถเชื่อมต่อได้หรือไม่

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


อย่าลืมคลิกที่แท็บผู้ให้บริการและเลือกผู้ให้บริการ OLE DB ที่เหมาะสม: "ผู้ให้บริการ Microsoft OLE DB สำหรับ SQL Server"
— DaveB

เดฟยินดีต้อนรับและคำตอบที่ดี คุณสามารถแก้ไขโพสต์ของคุณ (มุมซ้ายล่าง) เพื่อเพิ่มข้อมูลเพิ่มเติมนี้ จากนั้นลบความคิดเห็นของคุณ
— Michael Green

นี่เป็นคำตอบที่ดีมากเพราะทำงานได้ดีบนเซิร์ฟเวอร์ทุกเครื่องไม่ว่าจะติดตั้งอะไรหรืออะไรก็ตาม สิ่งที่คุณต้องมีคือ Notepad ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมนี้ช่วยให้ฉันโน้มน้าวใจลูกค้าว่าการเชื่อมต่อ SQL นั้นใช้งานได้จริง
— robnick

8

หากคุณมีMicrosoft.SqlServer.Smoแอสเซมบลีใน GAC ของคุณบนเครื่องท้องถิ่นสิ่งนี้สามารถทำได้อย่างง่ายดายด้วย PowerShell:

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null

$server = New-Object Microsoft.SqlServer.Management.Smo.Server("YourSqlServerName")

# do a simple operation to see if you can get data
Try {
    $server.Version | Out-Null
    Write-Host "SQL Server connection successful!!!"
}
Catch [System.Exception] {
    Write-Host "Error connecting to SQL Server..."
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.