【发布时间】:2011-02-17 21:26:26
【问题描述】:
我有一个以 .vbs 结尾的文本文件,我在其中写入了以下内容:
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.ACE.OLEDB.12.0"
Conn.Properties("Data Source") = "C:\dummy.accdb"
Conn.Properties("Jet OLEDB:Database Password") = "pass"
Conn.Open
Conn.Close
Set Conn = Nothing
- 当我在 Windows 32 位计算机上执行此操作时,它会在没有任何概念的情况下运行并结束(预期)。
- 当我在 Windows 64 位机器上执行此操作时,会出现错误
找不到提供程序。它可能没有正确安装。
但它已安装。我认为问题的根源在于提供程序是 32 位提供程序,据我所知它不存在 64 位。
如果我在 64 位机器上通过 IIS 运行 VBScript(作为 ASP 文件),我可以选择它应该在 32 位模式下运行。然后它可以找到提供者。
如何让它在 Windows 64 位上找到提供程序?我可以告诉 CScript(执行 .vbs 文本文件)以某种方式在 32 位模式下运行吗?
【问题讨论】:
-
请注意,即使使用 32 位 Cscript,也不是所有数据库提供程序都能正常工作。如果提供程序是驱动程序(例如:SQLite),则它不起作用。您需要在 64 位 Windows 上安装 64 位 SQLite 驱动程序,因此提供程序将在 64 位 cscript(以及 64 位上的 32 位 cscript)中工作。
-
ODBC 驱动程序根本不是 OLEDB 提供程序。这些通常通过 shim Provider
MSDASQL与 ADO 一起使用,这是默认的兼容性提供程序。当然,如果您将更过时的系统 DSN 加入其中,由于注册表可见性问题,事情会变得很冒险。
标签: vbscript 64-bit 32-bit adodb provider