PRB: ข้อความแสดงข้อผิดพลาด "ไคลเอ็นต์ไม่สามารถสร้างการเชื่อมต่อ" เมื่อเชื่อมต่อจาก ASP ไปยัง SQL Server


อาการ


เมื่อเปิดการเชื่อมต่อในโค้ด Active Server Pages (ASP) ไปยัง SQL Server บนคอมพิวเตอร์ที่แยกต่างหากจากเว็บเซิร์ฟเวอร์หนึ่งในข้อความแสดงข้อผิดพลาดที่คล้ายกันเหล่านี้อาจปรากฏขึ้น:
ผู้ให้บริการ Microsoft OLE DB สำหรับข้อผิดพลาดของโปรแกรมควบคุม ODBC ' 80004005 ' [Microsoft] [โปรแกรมควบคุม ODBC SQL Server] ไม่สามารถสร้างการเชื่อมต่อ/asppage, line xxx
หรือ
ผู้ให้บริการ Microsoft OLE DB สำหรับข้อผิดพลาด SQL Server ' 80004005 ' [DBNMPNTW] ConnectionOpen (CreateFile ())/asppage.asp, line xxx
หรือ
ผู้ให้บริการ Microsoft OLE DB สำหรับข้อผิดพลาดของโปรแกรมควบคุม ODBC ' 80040ed ' [Microsoft] [โปรแกรมควบคุม ODBC SQL Server] [SQL Server] การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ ' NT Authority\Anonymous Logon '/asppage.asp, line xxx

สาเหตุ


ข้อผิดพลาดนี้จะเกิดขึ้นถ้าโหมดการรักษาความปลอดภัยของ SQL Server ถูกตั้งค่าเป็น Microsoft Windows NT เท่านั้นและบัญชีผู้ใช้ NT ที่ใช้ในการรับรองความถูกต้องของผู้ใช้บนคอมพิวเตอร์ IIS (เช่น IUSR_computer สำหรับการเข้าถึง IIS ที่ไม่ระบุชื่อ) ไม่มีสิทธิ์ในการเชื่อมต่อกับคอมพิวเตอร์ NT ของ SQL Server ระยะไกล

การแก้ไข


การใช้การเข้าถึงแบบไม่ระบุชื่อของ IIS
  1. เมื่อใช้เครื่องมือตัวจัดการผู้ใช้ของ NT ให้สร้างบัญชีผู้ใช้ NT ที่เหมือนกันเช่น IUSR_localcomputer บนคอมพิวเตอร์ NT ของ SQL Server ระยะไกล ตั้งค่าบัญชีผู้ใช้ให้เป็นรหัสผ่านที่คล้ายกันและให้สิทธิ์ในการ "เข้าสู่ระบบภายในเครื่อง"
  2. การใช้โปรแกรมจัดการบริการอินเทอร์เน็ตให้เปิด แผ่นคุณสมบัติ ของไดเรกทอรีเสมือนสำหรับแอปพลิเคชันบนเว็บให้เลือกแท็บ ความปลอดภัยของไดเรกทอรี คลิกที่ปุ่ม แก้ไข สำหรับ ตัวควบคุมการเข้าถึงและการรับรองความถูกต้องแบบไม่ระบุชื่อ เพื่อแสดงวิธีการ รับรองความถูก ต้อง คลิกปุ่มแก้ไขสำหรับอนุญาตการเข้าถึงแบบไม่ระบุชื่อเพื่อแก้ไขบัญชีผู้ใช้ NT ที่ใช้สำหรับการเข้าถึงแบบไม่ระบุชื่อแล้วล้างกล่องกาเครื่องหมายเปิดใช้งานการซิงโครไนซ์รหัสผ่านโดยอัตโนมัติ บันทึกการเปลี่ยนแปลงโดยการคลิก ตกลง เพื่อปิดกล่องโต้ตอบ ขั้นตอนที่สองนี้เป็นสิ่งจำเป็นเนื่องจากปัญหาเกี่ยวกับการมอบสิทธิ์ของบัญชีผู้ใช้ใน NT
การใช้การรับรองความถูกต้องพื้นฐานของ IIS
  1. อ้างอิงไปยังขั้นตอนก่อนหน้าถ้าผู้ใช้ลงชื่อเข้าใช้ IIS โดยใช้บัญชีผู้ใช้ภายในเครื่องไปยังเซิร์ฟเวอร์ NT ที่มี IIS เมื่อได้รับพร้อมท์สำหรับชื่อผู้ใช้และรหัสผ่านโดยเบราว์เซอร์
  2. ถ้าผู้ใช้ลงชื่อเข้าใช้โดยใช้บัญชีโดเมนและทั้งสองคอมพิวเตอร์ของ NT สำหรับ IIS และ SQL Server อยู่ในโดเมนเดียวกันให้ตรวจสอบให้แน่ใจว่าบัญชีผู้ใช้นั้นมีสิทธิ์ "เข้าถึงคอมพิวเตอร์เครื่องนี้จากเครือข่าย" บนคอมพิวเตอร์ NT ของ SQL Server โดยตรงหรือโดยอ้อมโดยยึดตามสิทธิ์ที่กำหนดให้กับกลุ่มที่ลูกค้าองค์กรเป็นสมาชิก