来自 Azure Func 或 Logic App 的 OleDB 或 ODBC



我有一个使用Access数据库(.mdb文件(的遗留应用程序。基本上,它读取现有的 mdb 文件并填充新数据,这些数据由下游系统使用。我们无法摆脱mdb文件,并且功能非常重要,因为它被各种客户端使用。

我们需要将该应用程序迁移到Azure,我们提出了几个Azure Func和Logic App。我们正在寻找实现此功能的可能选项。

作为 poc 当我尝试从本地运行的 AF 访问 mdb 文件时,它在打开连接时失败。

string connString = $"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={dbFileName};";
using (OdbcConnection connection = new OdbcConnection(connString))
{
try
{
connection.Open();
OdbcDataReader reader = null;
OdbcCommand command = new OdbcCommand("SELECT * from Table1", connection);
reader = command.ExecuteReader();
while (reader.Read())
{
return (ActionResult)new OkObjectResult($"Found {reader["Field1"]}");
}
}catch(Exception ex)
{
log.LogError(ex, "something wrong");
}
}

相同的代码在控制台应用上工作正常。传递给连接的 mdb 文件路径是绝对本地路径。我不确定当在本地 Af 中不起作用时,这是否适用于 Azure。

我目前正在使用"System.Data.Odbc - 4.5.0",我得到的异常是

"无法加载 DLL 'libodbc.so.2' 或其依赖项之一:找不到指定的模块。(HRESULT的例外:0x8007007E(">

当我们无法从AF或LogicApp安装/使用odbc/oledb驱动程序时,我们如何访问/操作mdb文件。

除了使用 VM 之外,有没有实现此功能的好方法。

我们不安装 Microsoft.Ace.we.12.0' 驱动程序。 Microsoft.Ace 驱动程序在服务器端环境中不受支持,并且没有计划将这些驱动程序添加到 Azure 网站/Azure 函数中,也无法添加这些驱动程序。

这留下了使用已安装的 Jet 驱动程序的选项,但是这些驱动程序仅在 32 位版本中可用,因此您必须将站点配置为在 32 位版本中运行。

Microsoft OLE DB Provider for Jet 和 Microsoft Access ODBC 驱动程序仅在 32 位版本中可用:http://support.microsoft.com/kb/957570/en-us

相关内容

  • 没有找到相关文章

最新更新