วิธีง่ายๆในการตรวจสอบการเชื่อมต่อกับ 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.