使用 AWS Lambda 函数 .Net 连接到 Microsoft Access 数据库 (.mdb)

Posted

技术标签:

【中文标题】使用 AWS Lambda 函数 .Net 连接到 Microsoft Access 数据库 (.mdb)【英文标题】:Connect to Microsoft Access Database(.mdb) using AWS Lambda Function .Net 【发布时间】:2019-12-28 08:07:22 【问题描述】:

我尝试使用以下代码建立连接,但 AWS Lambda 函数抛出错误。

using System.Data.OleDb;

OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...");

con.Open();

错误:

System.Data.OleDb is not supported on this platform.: PlatformNotSupportedException
   at System.Data.OleDb.OleDbConnection..ctor(String connectionString)
   at AWSLambda1.Function.FunctionHandler(String input, ILambdaContext context) in C:\Users\TestUser\source\repos\AWSLambda1\AWSLambda1\Function.cs:line 35
   at lambda_method(Closure , Stream , Stream , LambdaContextInternal )

有人可以帮忙吗?如果 Lambda 函数不支持 OleDb,那么您能告诉我连接 Microsoft Access 数据库的方法吗?

提前致谢。

【问题讨论】:

对于错误信息,这是不可能的。要么避免使用这种环境,要么使用其他数据库。 我不知道 AWS lambda 使用什么运行时,但您可以查看此方法(不使用 OLEDB)是否有效。但这取决于 lambda 运行时中的内容。 mrojas.ghost.io/msaccess-in-dotnetcore docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html 表示 C# 运行时在 .NET Core 2.1 上。这没有OLEDB。现在我将阅读有关自定义运行时的内容,看看是否有办法做到这一点。 这是为了解释如何创建自定义运行时(您可以在其中安装 ODBC 驱动程序),但我无法理解它。在这个阶段,您应该解释您实际尝试做的事情,以及除了 AWS Lambda 函数之外还有哪些选项。你可以通过多种方式连接到 MS Access,但从 AWS Lambda docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html987654323@ 似乎很难 @Nick.McDermaid 是的,您说得对,我们无法从 AWS Lambda 连接,因为 AWS Lambda 使用 Linux 作为不包含 OleDB 或 ODBC 库的操作系统。所以我使用了 AWS Docker 容器。而不是 OleDB,我使用了 ODBC(System.Data.Odbc) 驱动程序。谢谢大家的建议。 【参考方案1】:

这是作为 x64 位运行的吗? x64位运行进程不支持JET。

如果 AWS 支持 JET,那么您将不得不强制您的项目使用 x86(x32 位)。这意味着您不能使用任何 CPU,也不能将 x64 用于 .net 项目。您必须将项目强制为 x32。但是,在该系统上运行的其他软件,包括 Web 服务器,很可能以 x64 位运行。

如果您的 Web 服务器是 x64,那么您必须使用 JET 数据引擎的 x64 位版本。 JET 没有 x64,但是有一个叫做 ACE 的 x64 位版本,它可以读取 mdb 文件。所以现在的问题是您在 AWS 上使用的容器是否支持 JET,如果支持,那么您必须确保将您的 .net 项目强制编译为 x32 位。

【讨论】:

以上是关于使用 AWS Lambda 函数 .Net 连接到 Microsoft Access 数据库 (.mdb)的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何从 AWS Lambda 函数连接到 Redis 实例?

AWS Lambda 上的节点函数无法使用 node-pg 连接到数据库

使用 Node.js 从 AWS Lambda 函数连接到 MySql 数据库,没有连接回调

如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名

使用 AWS Lambda 连接到 Oracle RDS 时出现错误 (DPI-1047)

AWS Lambda不支持连接到专用租赁VPC中的资源