ผู้ให้บริการ Microsoft.Jet.OLEDB.4.0 'ไม่ได้ลงทะเบียนในเครื่องท้องถิ่น


191

ฉันสร้างแอปพลิเคชัน windows ที่พัฒนาใน. NET 3.5 ในเซิร์ฟเวอร์ Windows 2008 32 บิต เมื่อปรับใช้แอปพลิเคชันในเซิร์ฟเวอร์ 64 บิตจะแสดงข้อผิดพลาด "ผู้ให้บริการ Microsoft.Jet.OLEDB.4.0 'ไม่ได้ลงทะเบียนในเครื่องท้องถิ่น"

ดังนั้นเพื่อแก้ไขปัญหานี้ฉันได้เปลี่ยนคุณสมบัติ build ของโปรเจ็กต์เป็น X86 เพื่อที่จะสร้างในโหมด 32 บิตและสร้างโปรเจ็กต์ใหม่ในเครื่อง 32 บิต แต่โครงการเดียวกันใช้ไดรเวอร์ฐานข้อมูลอื่น (DB2, SQL เป็นต้น) เพื่อเชื่อมต่อกับฐานข้อมูลอื่น ดังนั้นเมื่อฉันปรับใช้แอปของฉันอีกครั้งในระบบปฏิบัติการ 64 บิตข้อผิดพลาด "พยายามโหลดแอสเซมบลี 64- บิตบนแพลตฟอร์ม 32 บิต"

ฉันใช้ไดรเวอร์ Microsoft.Jet.OLEDB.4.0 เพื่ออ่านและเขียนไปยัง Excel (.xls)

คำตอบ:


239

ฉันพบวิธีแก้ไขปัญหานี้แล้ว ปัญหาที่ฉันอธิบายในคำถามของฉันเกิดขึ้นโดยทั่วไปเนื่องจากความไม่ลงรอยกันของไดรเวอร์ Microsoft.Jet.OLEDB.4.0ในระบบปฏิบัติการ 64 บิต

ดังนั้นหากเรากำลังใช้ไดรเวอร์ Microsoft.Jet.OLEDB.4.0 ในเซิร์ฟเวอร์ 64 บิตเราต้องบังคับให้แอปพลิเคชันของเราสร้างในโหมด 32 บิต (นี่คือคำตอบที่ฉันพบเมื่อฉันทำการค้นหาปัญหาที่ทราบนี้อย่างกว้างขวาง) และนั่นทำให้ส่วนอื่น ๆ ของรหัสของฉันแตก

โชคดีที่ตอนนี้ Microsoft ได้เปิดตัว2010 Office System Driver 64 บิตซึ่งสามารถใช้แทนไดรเวอร์ Microsoft.Jet.OLEDB.4.0 แบบดั้งเดิมได้ มันทำงานได้ทั้งในแบบ 32 บิตและ 64 บิตเซิร์ฟเวอร์ ฉันใช้มันสำหรับการจัดการไฟล์ Excel และมันใช้ได้ดีสำหรับฉันในทั้งสภาพแวดล้อมแต่คนขับนี้อยู่ในรุ่นเบต้า

คุณสามารถดาวน์โหลดไดรเวอร์นี้ได้จากMicrosoft Access Database Engine 2010 Redistributable


6
ให้ความสนใจเป็นพิเศษกับคำแนะนำในลิงค์นั้นด้วย :)
Mark

4
ฉันมีปัญหาเดียวกัน ฉันเปลี่ยนการกำหนดค่าแอปพลิเคชันเป็น x86 จากนั้นก็ใช้ได้!
skpaul

9
นอกจากนี้ฉันยังต้องเปลี่ยนสตริงการเชื่อมต่อจากการใช้ Microsoft.Jet.OLEDB.4.0 เป็น Microsoft.ACE.OLEDB.12.0
Spikolynn

16
ใช่แม้ว่าเอ็นจิน Access Database Engine ที่ใช้งานร่วมกันได้ 64- บิตนั้นจำเป็นต้องมีผลิตภัณฑ์ MS Office รุ่น 32 บิตที่ติดตั้งไว้แล้วในระบบ (เช่น MS Word 32 บิต) ซึ่งเป็นปัญหาใหญ่ วิธีแก้ปัญหาคือคุณใช้ Access Database Engine 2010 รุ่น 32 บิตและบังคับให้แอปพลิเคชัน. NET ของคุณทำงานในโหมด 32 บิต (เช่นโดยเลือกแพลตฟอร์ม x86 ในเครื่องมือจัดการการกำหนดค่า) และทางออกที่เหมาะสมคือการแทนที่ MS Access ด้วยทางเลือกที่ดีกว่า
Massood Khaari

3
คำถาม noob: ฉันสามารถกระจายไดรเวอร์นี้เช่น "ภายในแอปพลิเคชันของฉัน" หรือผู้ใช้ทุกคนที่ต้องการใช้แอปพลิเคชันของฉันต้องติดตั้งด้วยตนเองหรือไม่?
philx_x

117

หากปัญหายังคงอยู่ใน ASP.NET สิ่งที่ฉันต้องทำคือเปลี่ยนการตั้งค่า "เปิดใช้งานแอปพลิเคชัน 32 บิต" เป็น True ในการตั้งค่าขั้นสูงสำหรับกลุ่มแอพลิเคชัน


ฉันใช้ ODBC 64 บิตและการเปลี่ยนแปลงนี้เริ่มต้นเพื่อให้ข้อผิดพลาดของฐานข้อมูลแก่ฉัน ฉันแก้ไขมันแล้ว ในกรณีที่มีคนพบสิ่งนี้ด้วยคุณจะต้องติดตั้งไดรเวอร์ ODBC 32- บิตแล้วสร้าง DSN ของคุณขึ้นมา
Farhan Hafeez

2
มันเป็นไปได้ที่จะทำสิ่งนี้ทั้งหมดในรหัส 64- บิตตอนนี้ ติดตั้งเผยแพร่ต่อที่เชื่อมโยงในคำตอบของนีโอแล้วใช้สตริงของผู้ให้บริการที่แนะนำในคำตอบของอิคบาล จากนั้นถอนคำตอบทั้งคู่ออกมา แค่นั้นแหละ!
Roman Starkov

แก้ไขปัญหานี้สำหรับฉันใน Windows Server 2008 R2 หลังจากติดตั้งRedist Engine DB Access 32 บิตแล้ว
Chris Pickford

2
ข้อเสียคือพูลจะทำงานในโหมด 32 บิต เราจะเปลี่ยนเป็น ACE แทนเพื่อหลีกเลี่ยงปัญหานี้
wtjones

ทำงานให้ฉันด้วย Windows Forms ได้เช่นกัน ไม่มีรหัส ASP.NET เลย
philx_x

53

ผมมีปัญหาเดียวกัน

ผู้ให้บริการ Microsoft.Jet.OLEDB.4.0 'ไม่ได้ลงทะเบียนในเครื่องท้องถิ่น

ฉันใช้คำตอบโดยนีโอแต่ไม่ได้ผลจนกว่าฉันจะเปลี่ยนผู้ให้บริการเป็น“ ผู้ให้บริการ = Microsoft.ACE.OLEDB.12.0;” ในสตริงการเชื่อมต่อ

หวังว่านี่จะช่วยได้หากบางคนประสบปัญหาเดียวกัน


4
นี่ไง! สำหรับเซิร์ฟเวอร์ 64 บิตให้ติดตั้งredistributable ที่เชื่อมโยงโดย neo (ตัวแปร 64 บิตชัดแจ้ง) จากนั้นเปลี่ยนผู้ให้บริการตามที่ระบุในคำตอบนี้จากนั้นจะสามารถใช้งานได้
Roman Starkov

คุณเป็น romkyns ที่ถูกต้อง ฉันบอกไปแล้วว่าฉันใช้โซลูชันนีโอจากนั้นเปลี่ยนผู้ให้บริการ แต่ต้องขอบคุณความคิดเห็นของคุณทำให้ชัดเจนยิ่งขึ้น ขอบคุณมาก romkyns
อิคบาล

แทนที่ Microsoft.Jet.OLEDB.4.0 ด้วย Microsoft.ACE.OLEDB.12.0 ใน app.config และทุกอย่างทำงานได้
AVEbrahimi

1
ฉันพบว่าสิ่งนี้ใช้ได้ผลในขณะที่ จำกัด แอปเป็น 32 บิตไม่ได้ทำให้อะไรแตกต่าง
Ryan Lundy

ในกรณีของฉัน "Microsoft.ACE.OLEDB.12.0 ไม่ได้ลงทะเบียน" :(
Césarเลออน

29

ฉันรู้ว่ามันเป็นคำถามที่ค่อนข้างเก่าและหลายคนตอบแล้ว แต่ฉันกำลังสรุปสิ่งต่าง ๆ เพื่อความเข้าใจ:

หากนามสกุลไฟล์เป็น xls และ OS เป็น 32 บิตคุณจะสามารถใช้ " Microsoft.Jet.OLEDB.4.0" ได้เท่านั้น Microsoft ยังไม่ได้เปิดตัวไดรเวอร์รุ่น 64 บิต

หากนามสกุลไฟล์เป็น xlsx หรือ OS เป็น 64 บิตคุณจะต้องใช้ " Microsoft.ACE.OLEDB.12.0" แอปพลิเคชั่นที่รวบรวมในโหมด 32/64 บิตไม่ส่งผลกระทบต่อการเลือกไดรเวอร์

ติดตั้งไดรเวอร์ 64 บิตของMicrosoft.ACE.OLEDB.12.0บน OS 64 บิตเสมอ หากคุณติดตั้ง Office 32 บิตแล้วคุณต้องเรียกใช้ไดรเวอร์จาก cmd ด้วย / อาร์กิวเมนต์แฝง แฮ็คนี้ใช้งานได้จนถึง Office 2013 เท่านั้น Microsoft หยุดการแก้ไขปัญหานี้จาก Office 2016 สำหรับไดรเวอร์ Microsoft.ACE.OLEDB.16.0

AccessDatabaseEngine_x64.exe /passive

ดาวน์โหลดไดรเวอร์ Microsoft.ACE.OLEDB.12.0

private void ProcessFile(string path)
{
    string connString = string.Empty;

    if (Path.GetExtension(path).ToLower().Trim() == ".xls" && Environment.Is64BitOperatingSystem == false)
        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
    else
        connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}

หากแอปพลิเคชันถูกคอมไพล์ด้วยการตั้งค่าสถานะ AnyCPU มันจะค้นหาโปรแกรมควบคุม 64 บิตบนระบบปฏิบัติการ 64 บิตและ 32 บิตสำหรับโปรแกรมควบคุมการเข้าถึง 32 บิต


1
ขอบคุณสำหรับคำตอบของคุณ แต่ฉันใช้ VS2015 บน Windows 10 และใช้ X64 เมื่อฉันเปลี่ยนการกำหนดค่าโครงการจาก AnyCPU เป็น X86 ปัญหาหายไป ฉันไม่ต้องติดตั้งไดรเวอร์เพิ่มเติม
NoChance

@ ไม่มีโอกาสฉันคิดว่าคุณได้ติดตั้ง Office 64 บิตบนเครื่องของคุณแล้วและมีไดรเวอร์ Microsoft.ACE.OLEDB.12.0 อยู่แล้ว
Romil Kumar Jain

ขอบคุณสำหรับคำตอบของคุณฉันมี office 2007 เท่านั้น
NoChance

19

ฉันมีข้อความเดียวกันฉันมีหน้าเว็บที่ต้องทำใน visual studio 2010 ฉันอ่านไฟล์. xls บนหน้านั้นในโครงการของฉันภาพไม่มีปัญหาใด ๆ เมื่อฉันวางไว้ใน IIS ท้องถิ่นของฉันทำให้ฉัน'Microsoft .Jet.OLEDB.4.0 'ผู้ให้บริการไม่ได้ลงทะเบียนในเครื่องท้องถิ่น' ฉันได้แก้ไขปัญหาดังกล่าวแล้วให้ทำตามขั้นตอนนี้

1.
-IIS เปิด2. เปลี่ยน appPool บนการตั้งค่าขั้นสูง 3.-
จริงเพื่อเปิดใช้งานกับแอปพลิเคชัน 32 บิต

และนั่นคือทั้งหมดที่

ps.I เปลี่ยนเครื่องมือจัดการการกำหนดค่าเป็น X86 บน Active Solution Platform


บังคับให้แอปของคุณทำงานในโหมด 32 บิต คุณต้องปิดการตั้งค่านี้หากคุณต้องการหลีกเลี่ยงอุปสรรค 4GB
Brain2000

18

หากแอปพลิเคชันของคุณทำงานบน localIIS คุณสามารถแก้ปัญหานี้ได้โดยการเปิดใช้งานแอพพลิเคชั่นแบบ 32 บิตในการตั้งค่าขั้นสูงของ AppPool

ป้อนคำอธิบายรูปภาพที่นี่


8

ฉันมีปัญหาเดียวกัน ฉันเปลี่ยนการกำหนดค่าแอปพลิเคชันเป็นx86แล้วมันใช้งานได้!


วิธีการเปลี่ยนการกำหนดค่านี้ ฉันได้สร้างโครงการประเภทเว็บไซต์
SHEKHAR SHETE

7

ฉันเพิ่งเปลี่ยนคุณสมบัติของโครงการเป็นรูปแบบ x64

โครงการ ---> คุณสมบัติ ---> สร้าง ---> กรอบงานเป้าหมาย ---> X64


5

เราพบปัญหานี้ในแอปเดสก์ท็อป

สภาพแวดล้อมการพัฒนา: Windows 7 Ultimate - 64 บิต .Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0

ได้รับการแก้ไขโดยเปลี่ยนเป้าหมายแพลตฟอร์มเป็น X86 จาก CPU ใด ๆ คุณสมบัติโครงการ >> สร้าง >> เป้าหมายแพลตฟอร์ม

ป้อนคำอธิบายรูปภาพที่นี่


2

ฉันพบปัญหานี้กับแอปพลิเคชันเดสก์ท็อปของฉัน (ผู้ให้บริการ 'Microsoft.Jet.OLEDB.4.0' ไม่ได้ลงทะเบียนในเครื่องท้องถิ่น) ฉันไม่มีตัวเลือกในการสร้างเป็นแอพ 32 บิต การหวังว่าสิ่งนี้จะช่วยผู้อื่นในสถานการณ์เดียวกัน

ฉันทำสิ่งต่อไปนี้และปัญหาหายไป:

  1. ติดตั้งMicrosoft Access Database Engine 2010 Redistributableรุ่น 64 บิตตามที่แนะนำโดย neo

  2. เปลี่ยนผู้ให้บริการของฉันเป็น Microsoft.ACE.OLEDB.12.0


2

แม้ว่าทางออกที่ดีที่สุดคือการคอมไพล์ใหม่ตามที่แนะนำข้างต้นซึ่งต้องมีการเข้าถึงซอร์สโค้ด ในกรณีของฉันฉันเพิ่งเสร็จสิ้น. exe และต้องใช้โซลูชันนี้ มันใช้CorFlags.exeจาก. Net SDK เพื่อเปลี่ยนลักษณะการโหลดของแอปพลิเคชัน

  1. ดาวน์โหลด. Net Framework SDK (โดยส่วนตัวแล้วฉันใช้3.5แต่เวอร์ชันที่ใช้ควรอยู่ที่หรือสูงกว่า. Net ที่จำเป็นสำหรับแอปพลิเคชันของคุณ
  2. เมื่อติดตั้งทั้งหมดที่คุณต้องมีCorLibs.exeเพื่อให้เพียงแค่ตรวจสอบเครื่องมือสำหรับการพัฒนาของ Windows
  3. CorFlags.exeหลังจากการติดตั้งค้นหาของคุณ สำหรับการติดตั้งของฉันของ NET Framework 3.5 SDK, C:\Program Files\Microsoft SDKs\Windows\v7.0\Binมันก็คือที่
  4. path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+คำสั่งเปิดรวดเร็วและประเภท

คุณทำเสร็จแล้ว! นี่เป็นการตั้งค่าสถานะเริ่มต้นสำหรับโปรแกรมของคุณเพื่อให้เริ่มในโหมด WOW64 32 บิตและสามารถเข้าถึง microsoft.jet.oledb.4.0


1

เปลี่ยนในการตั้งค่าขั้นสูงของแอพพลิเคชั่นพูลการตั้งค่า IIS เปิดใช้งานแอปพลิเคชัน 32 บิต


1

เพียงแค่เปลี่ยนสถานที่ให้บริการขึ้นอยู่กับเครื่องของคุณและทั้งหมดได้ทำ :-)

โครงการ ---> คุณสมบัติ ---> สร้าง ---> กรอบงานเป้าหมาย ---> X64

หรือ

โครงการ ---> คุณสมบัติ ---> สร้าง ---> กรอบงานเป้าหมาย ---> X86


1

ฉันเปลี่ยนสตริงการเชื่อมต่อจาก

var myConnectionString = string.Format ("ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล = {0}; คงข้อมูลความปลอดภัย = True; Jet OLEDB: รหัสผ่านฐานข้อมูล =;", gisdbPath);

สำหรับสิ่งนี้:

var myConnectionString = string.Format ("ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; Mode = แบ่งปันปฏิเสธไม่มีแหล่งข้อมูล = {0}; id ผู้ใช้ = ผู้ดูแลระบบรหัสผ่าน =;", gisdbPath);

มันทำงานไปมาฉันไม่เคยถาม Microsoft.Jet.OLEDB.4.0'registered


0

แน่นอนว่าไม่มี Jet 64 บิต - และไม่มีแผน (ชัด ๆ ) ในการสร้าง

คุณอาจใช้ไดรเวอร์ ACE 64 บิตได้: http://www.microsoft.com/en-us/download/details.aspx?displaylang=th&id=23734

  • แต่ฉันไม่รู้ว่ามันจะทำงานอย่างไรถ้าคุณต้องการกลับไปที่ Jet สำหรับแอป 32 บิตของคุณ

อย่างไรก็ตามคุณอาจสามารถเปลี่ยนโปรเจ็กต์เป็น 32 บิตในเวอร์ชัน Express (ฉันไม่ได้ลองและไม่ได้ติดตั้ง 2008 ในรสชาติใด ๆ อีกต่อไป)

อาจถึงเวลาที่จะคัดลอกฐานข้อมูลของ Access ไปเลยกัด bullet แล้วไปที่เซิร์ฟเวอร์ SQL แทน?



0

ใน IIS รุ่นเก่ากว่าคุณจะไม่พบAdvance Settingsเพื่อเปิดใช้งานEnable 32-bit Applicationsคุณต้องดำเนินการคำสั่งต่อไปนี้:

cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs ตลาดหลักทรัพย์ W3SVC / AppPools / Enable32bitAppOnWin64 1

และ

% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i

อ้างอิง: ที่นี่


0

ฉันได้รับข้อยกเว้นเดียวกันขณะเรียกใช้ "SQL Server 2014 Import and Export Data (64-bit)" ใน Windows 8.1 ของฉัน

เพื่อแก้ไขปัญหานี้ฉันได้ทำสิ่งต่อไปนี้แล้ว

เริ่ม SQL Server 2014 นำเข้าและส่งออกข้อมูล (32 บิต) แทน 64- บิตและมันทำงานได้ดีสำหรับฉัน ฉันไม่ได้เปลี่ยนการตั้งค่า IIS ใด ๆ และไม่ได้ติดตั้งซอฟต์แวร์เพิ่มเติมใด ๆ


0

ฉันรู้ว่าฉันมีปัญหานี้ครั้งแล้วครั้งเล่าเมื่อฉันปรับใช้แอปพลิเคชันของฉันบนเซิร์ฟเวอร์ใหม่เพราะฉันใช้ไดรเวอร์นี้เพื่อเชื่อมต่อกับไฟล์ 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' มันถูกเปิดแล้วโดยผู้ใช้รายอื่นหรือคุณต้องการสิทธิ์ในการดูและเขียนข้อมูล ซึ่งบอกฉันว่าฉันไม่ไกลจากการแก้มัน

อาจมีอีกกระบวนการหนึ่งที่เปิดไฟล์ในขณะที่ทั้งหมดที่ฉันต้องทำคือการรีสตาร์ทและทุกอย่างจะเริ่มทำงานอย่างราบรื่นตามที่คาดไว้


0

ไปที่ Start-> Run และพิมพ์ cmd สิ่งนี้จะเริ่มพร้อมท์คำสั่ง (มีให้จาก Start-> Programs-> Accessories-> Command Prompt)

พิมพ์ cd .. แล้วกด return type cd .. แล้วกด return อีกครั้ง (ทำต่อไปจนกว่าจะมีข้อความแจ้งแสดง:>)

ตอนนี้คุณต้องไปที่โฟลเดอร์พิเศษซึ่งอาจเป็น c: \ windows \ system32 หรืออาจเป็น c: \ winnt \ system32 หรืออาจเป็น c: \ windows \ sysWOW64 ลองพิมพ์แต่ละตัวเช่น cd c: \ windows \ sysWOW64 (ถ้ามีข้อความว่าระบบไม่พบเส้นทางที่ระบุลองอีกอัน) cd c: \ windows \ system32 cd c: \ winnt \ system32 เมื่อหนึ่งในนั้นไม่ทำให้เกิดข้อผิดพลาดหยุดคุณได้พบ โฟลเดอร์ที่ถูกต้อง

ตอนนี้คุณต้องลงทะเบียน OLE DB 4.0 DLLs โดยพิมพ์คำสั่งเหล่านี้และกดส่งคืนหลังจากแต่ละรายการ

regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll


-2

ไม่มีผู้ให้บริการ 64 บิตสำหรับ Jet หากคุณต้องการสนับสนุนแหล่งข้อมูลหลายแหล่งรวมถึง Jet to Excel คุณต้องมีส่วนของแอปพลิเคชั่นของคุณในการประมวลผลแบบ 32 บิตเป็นอย่างน้อย

ข้อผิดพลาดที่คุณได้รับเมื่อคุณคอมไพล์สำหรับ x86 นั้นค่อนข้างแปลก ฉันไม่เห็นว่าคุณจะอ้างอิงชุดประกอบ 64 บิตในกรณีนี้อย่างไร


แอนโทนี่ฉันจะทำให้บางส่วนของโครงการทำงานในโหมด 32 บิตได้อย่างไร การเชื่อมต่อฐานข้อมูลทั้งหมดเหล่านี้รวมถึง Excel จะอยู่ภายใต้โครงการเดียว นอกจากนี้ฉันได้รับข้อผิดพลาดใน x86 เมื่อฉันพยายามเรียกใช้ในระบบปฏิบัติการ 64 บิต ฉันคิดว่าเป็นเพราะไดรเวอร์ DB2 ที่ติดตั้งใน 64 บิต OS เป็นรุ่น 64 บิตและเมื่อมีการอ้างอิงจากแอปพลิเคชันซึ่งกำหนดค่าให้ทำงานในโหมด 32 บิตทำให้เกิดข้อผิดพลาด
neo

หากการแบ่งโครงการออกเป็นหลายช่วงเวลานั้นยุ่งยากมากกว่าความคุ้มค่าที่คุณเหลืออยู่โดยการคอมไพล์เพียง 32 บิตเท่านั้น สำหรับปัญหาของ DB2 คุณจะต้องมองหาผู้เชี่ยวชาญ DB2 บางคนในเรื่องนี้บางทีคำถามเฉพาะของ DB2 อีกคำถามหนึ่ง โดยทั่วไปสิ่งต่าง ๆ เช่น SQL Server จะติดตั้งทั้งผู้ให้บริการ 32 บิตและ 64 บิตบนเครื่อง 64 บิต
AnthonyWJones

ขอบคุณแอนโทนี่สำหรับความคิดเห็นของคุณ จากการทำการค้นหาจำนวนมากเกี่ยวกับปัญหานี้และจากความคิดเห็นของคุณสิ่งที่ฉันเข้าใจคือฉันต้องสร้างส่วนหนึ่งของโครงการที่ประมวลผลแผ่นงาน Excel เป็นโครงการแยกต่างหากและทำให้มันรวบรวมในรุ่น 32 บิต
neo

3
เพื่อให้คนรู้ว่า A2010 จะมี Jet 64- บิต
David-W-Fenton

ขอบคุณ David, 2010 มีไดร์เวอร์ 64 บิต
ใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.