Azure Func或Logic App中的OleDB或ODBC

问题描述 投票:0回答:1

我有一个使用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无法正常运行时,这是否可以在Azure上运行。

我目前正在使用“ System.Data.Odbc-4.5.0”,但出现的异常是

“无法加载DLL'libodbc.so.2'或其依赖项之一:找不到指定的模块。(HRESULT的异常:0x8007007E)]

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

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

azure odbc azure-functions azure-logic-apps oledbconnection
1个回答
0
投票

我们不安装Microsoft.Ace.we.12.0'驱动程序。服务器端环境不支持Microsoft.Ace驱动程序,也没有计划将它们添加到Azure网站/ Azure函数中,也没有可能添加它们。

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

仅适用于32位版本的Microsoft Jet Jet OLE DB提供程序和Microsoft Access ODBC驱动程序可用:http://support.microsoft.com/kb/957570/en-us

© www.soinside.com 2019 - 2024. All rights reserved.