ฉันรู้ว่าฉันมีปัญหานี้ครั้งแล้วครั้งเล่าเมื่อฉันปรับใช้แอปพลิเคชันของฉันบนเซิร์ฟเวอร์ใหม่เพราะฉันใช้ไดรเวอร์นี้เพื่อเชื่อมต่อกับไฟล์ Excel ดังนั้นนี่คือสิ่งที่ฉันทำเมื่อเร็ว ๆ นี้
มี Windows Server 2008 R2 ฉันติดตั้งไดรเวอร์ Access สำหรับเครื่อง x64 บิตและกำจัดข้อความนี้ซึ่งทำให้ฉันมีความสุขมากที่จะชนเข้ากับอีกคนหนึ่ง
อันนี้ด้านล่างนี้ทำงานได้ดีบนเครื่อง dev ของฉัน แต่บนเซิร์ฟเวอร์ทำให้ฉันมีข้อผิดพลาดแม้หลังจากติดตั้งไดรเวอร์ ODBC ล่าสุดซึ่งฉันคิดว่านี่เป็นปัญหา แต่นี่เป็นวิธีที่ฉันจะแก้ไข
private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
ฉันแทนที่ด้วยผู้ให้บริการใหม่เช่นนี้ด้านล่าง:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';";
แต่เมื่อฉันทำสิ่งนี้มีสิ่งหนึ่งที่คุณควรสังเกต การใช้นามสกุลไฟล์. xlsx และรุ่น Excel คือ 12.0
หลังจากที่ฉันได้รับข้อความแสดงข้อผิดพลาดข้อผิดพลาด: "ไม่สามารถหา ISAM ที่ติดตั้งได้"ฉันตัดสินใจที่จะเปลี่ยนสิ่งต่าง ๆ เล็กน้อยเช่นด้านล่าง:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';";
และใช่ฉันทำกับสิ่งที่น่ารังเกียจ แต่ที่นี่ฉันได้รับข้อความอีกโปรแกรมฐานข้อมูล Microsoft Access ไม่สามารถเปิดหรือเขียนไฟล์ 'time_zone' มันถูกเปิดแล้วโดยผู้ใช้รายอื่นหรือคุณต้องการสิทธิ์ในการดูและเขียนข้อมูล ซึ่งบอกฉันว่าฉันไม่ไกลจากการแก้มัน
อาจมีอีกกระบวนการหนึ่งที่เปิดไฟล์ในขณะที่ทั้งหมดที่ฉันต้องทำคือการรีสตาร์ทและทุกอย่างจะเริ่มทำงานอย่างราบรื่นตามที่คาดไว้