แก้ไขปัญหาไม่สามารถเข้าถึงฐานข้อมูล Oracle หลังจากติดตั้ง ASP.NET แล้ว ฉันลืมว่าฉันโพสต์บทความนี้ไว้ที่ไหน
หลังจากติดตั้ง ASP.NET และไคลเอนต์ Oracle9i ฉันได้รับข้อความต่อไปนี้เมื่อใช้ System.Data.OracleClient เพื่อเข้าถึง ฐานข้อมูล Oracle
System.Data.OracleClient ต้องใช้ซอฟต์แวร์ไคลเอนต์ Oracle เวอร์ชัน 8.1.7 หรือสูงกว่า
เหตุผลก็คือ
การตั้งค่าการรับรองความถูกต้องความปลอดภัยของไคลเอนต์ Oracle 9i Release 2 เมื่อติดตั้งบนพาร์ติชัน NTFS ของ Windows ไม่ถูกต้อง ทำให้เกิดการตรวจสอบสิทธิ์ในเครื่อง ผู้ใช้ไม่สามารถดูเนื้อหาของไดเรกทอรี ORACLE_HOME ได้ ซึ่งทำให้เกิดข้อผิดพลาดข้างต้นที่จะรายงานเมื่อ ASP.NET ใช้ System.Data.OracleClient เพื่อเชื่อมต่อกับฐานข้อมูล Oracle ด้วยสิทธิ์ผู้ใช้ที่ได้รับการรับรองความถูกต้อง
วิธีแก้ไข
เพื่อแก้ไขปัญหาข้างต้น เพียงเพิ่มสิทธิ์ในการเข้าถึงไดเร็กทอรี Oracle Home ให้กับกลุ่มผู้ใช้ที่ได้รับการรับรองความถูกต้อง
เพื่อ
เข้าสู่ระบบ Windows ด้วยสิทธิ์ของผู้ดูแลระบบ
เริ่มเบราว์เซอร์ทรัพยากรของ Window และค้นหาไดเร็กทอรี ORACLE_HOME เช่น C:Oracleora92
คลิกขวาที่เมนูป๊อปอัปและเลือก Sharing and Security ของไดเร็กทอรี (คลิก Properties ภายใต้ Win2000)
คลิกแท็บ "ความปลอดภัย" และคลิกรายการ "ผู้ใช้ที่ได้รับการรับรองความถูกต้อง" ในรายการกลุ่มและชื่อผู้ใช้
ในรายการสิทธิ์ของผู้ใช้ ให้ยกเลิกการเลือกช่องทำเครื่องหมาย "อ่านและเรียกใช้" แล้วคลิกช่องทำเครื่องหมาย "อ่านและเรียกใช้" อีกครั้งเพื่อตั้งค่าให้ทำเครื่องหมายไว้ คลิกปุ่ม "ขั้นสูง" และเลือกรายการสิทธิ์ ตรวจสอบว่า "ผู้ใช้ที่ได้รับการรับรองความถูกต้อง" มีหรือไม่ สิทธิ์ "อ่านและเรียกใช้" ที่ใช้กับ "โฟลเดอร์นี้ โฟลเดอร์ย่อย และไฟล์" หากไม่ใช่ ให้ดับเบิลคลิกและตรวจสอบให้แน่ใจว่าสิทธิ์ "ใช้กับ" "โฟลเดอร์นี้" และโฟลเดอร์ย่อยและไฟล์" รายการนี้เป็นอย่างมาก สำคัญและคุณต้องตรวจสอบ
เพื่อ
ให้การเปลี่ยนแปลงทั้งหมดมีผล
== =============
ผู้ให้บริการ 'OraOLEDB.Oracle.1' ไม่ได้ลงทะเบียนในเครื่องท้องถิ่น มีสาเหตุที่เป็นไปได้สามประการสำหรับสถานการณ์นี้
1. เครื่องที่ติดตั้ง Oracle บน NTFS หรือไม่ หากเป็นเช่นนั้น ให้ปล่อยสิทธิ์ทั้งหมดของ BIN ภายใต้ Ora81 ให้กับผู้ใช้ทุกคน
(มิฉะนั้น ภายใต้โครงสร้าง B/S ข้อผิดพลาดนี้จะถูกรายงานเนื่องจากไม่มีสิทธิ์ในการเข้าถึงไดเร็กทอรี)
2. หากเซิร์ฟเวอร์ฐานข้อมูลเป็น Oracle816 ค้นหาไฟล์ sqlnet.ora ภายใต้ Ora81networkADMIN บนเครื่องเซิร์ฟเวอร์ และเปลี่ยนไฟล์
SQLNET.AUTHENTICATION_SERVICES= (NTS) เปลี่ยนเป็น
SQLNET.AUTHENTICATION_SERVICES= (ไม่มี)
(ซึ่งจะทำให้บางเครื่องรายงานข้อผิดพลาดความล้มเหลวในการเริ่มต้นไดร์เวอร์ ซึ่งเกิดขึ้นครั้งเดียวเมื่อใช้ OracleClient)
3. หากไม่มีวิธีใดข้างต้นสามารถแก้ปัญหาได้ คุณสามารถพิจารณาได้ว่าการลงทะเบียนในรีจิสทรีสูญหายจริงหรือไม่ (ความเป็นไปได้ค่อนข้างน้อย หน้าต่างยังค่อนข้างปลอดภัย)
regsvr32 ..ORACLE_HOMEbinOraOLEDB.dll
หากยังคงใช้งานไม่ได้ คุณสามารถลองติดตั้งไคลเอ็นต์ใหม่ได้