หมายเหตุ: ฉันเห็นได้ชัดว่าได้เปลี่ยนชื่อเซิร์ฟเวอร์และ IP เป็นชื่อปลอม
นี่คือสิ่งที่เกิดขึ้น ฉันมีเซิร์ฟเวอร์ที่ฉันเรียกMYSERVER
ใช้ Microsoft SQL Server Express 2005 อยู่บนเซิร์ฟเวอร์นี้เองฉันมีการเชื่อมต่อ ODBC ตั้งค่าชี้ไปที่ตัวเองและทำงานได้อย่างสมบูรณ์ ฉันเข้าสู่ระบบโดยใช้การพิสูจน์ตัวจริงของเซิร์ฟเวอร์ SQL (ไม่ใช่การรับรองความถูกต้องของ Windows) และได้รับการตั้งค่าเช่นนี้:
อย่างที่ฉันพูดไป แต่ต่อไปฉันมีคอมพิวเตอร์เครื่องอื่นซึ่งอยู่ในโดเมนที่แตกต่างกันโดยสิ้นเชิง / ไม่ได้อยู่บนอินทราเน็ตที่ต้องการเข้าถึง SQL Server เครื่องเดียวกันนี้ที่โฮสต์บน MYSERVER เนื่องจากอยู่ในโดเมนอื่นจึงไม่รู้จักชื่อ "MYSERVER" ฉันต้องชี้ไปที่ที่อยู่ IP ของ MYSERVER ซึ่งเราจะบอกว่าเป็น 123.456.789.012 แต่การเชื่อมต่อ ODBC ดูเหมือนจะไม่ทำงานที่นั่น ฉันลองตั้งค่าแบบนี้:
มันใช้งานไม่ได้ เมื่อฉันใส่ชื่อผู้ใช้และรหัสผ่านแล้วกดถัดไปมันจะหยุดทำงานเป็นเวลา 10 ถึง 20 วินาทีแล้วในที่สุดก็กลับมาพร้อมกับข้อผิดพลาดต่อไปนี้:
Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
ถ้าฉันลองสิ่งเดียวกัน แต่เปลี่ยน "เซิร์ฟเวอร์" 123.456.789.012\SQLEXPRESS
เป็นเพียงแค่เก่า123.456.789.012
ฉันได้รับข้อผิดพลาดอื่น:
Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.
ตอนนี้ฉันรู้ว่าคุณกำลังคิดอะไรอยู่ คุณอาจกำลังคิดว่า "คุณอาจไม่ได้เปิดไฟร์วอลล์สำหรับพอร์ต 1433 จำลอง" ยกเว้นที่ฉันทำและฉันยืนยันสิ่งนี้เนื่องจากฉันสามารถทำงานได้สำเร็จ :
telnet 123.456.789.012 1433
... จากบรรทัดคำสั่งทั้งหมดที่ฉันต้องการ ดังนั้นฉันไม่แน่ใจว่าจะทำอย่างไร ฉันรู้ว่า SQL Server มีอยู่ทำงานได้และการเชื่อมต่อ ODBC สามารถตั้งค่าได้อย่างถูกต้อง ฉันแค่ไม่แน่ใจว่าเป็นสิ่งที่ฉันผิดในการตั้งค่าการเชื่อมต่อของฉันที่มีการโยนข้อผิดพลาดเหล่านี้ จากข้อผิดพลาดหลังที่ฉันแสดงไว้ดูเหมือนว่ามันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ แต่ไม่สามารถค้นหาอินสแตนซ์ได้ (เนื่องจากฉันไม่ได้ระบุหนึ่งครั้ง) นั่นหมายความว่าฉันแค่ต้องใช้ไวยากรณ์ต่าง ๆ เพื่อระบุ IP พร้อมกับชื่ออินสแตนซ์? ฉันจะทำอย่างไร ขอบคุณล่วงหน้า.