首页 > 解决方案 > 使用 SqlConnection 时未注册“Microsoft.ACE.OLEDB.12.0”

问题描述

我陷入以下情况:

我正在使用System.Data.SqlClient.SqlConnection与我的数据库进行通信。

using (var con = new SqlConnection(_settings.Database_SqlConnectionString))
{
    con.Open();

    var qryDateChanged = "...;";
    DateTime dateChanged;

    if (DateTime.TryParse(new SqlCommand(qryDateChanged, con).ExecuteScalar().ToString(), out dateChanged))
    {
        if (lastWriteTime > dateChanged)
        {
            var stUpdate = "...";
            new SqlCommand(stUpdate, con).ExecuteNonQuery();
        }
    }
}

我的连接字符串是这样构建的:

public String Database_SqlConnectionString
{
    get 
    {
        var conString = 
                $"Data Source={Database_Server};" +
                $"Initial Catalog={Database_Database};" +
                $"User Id={Database_User};" +
                $"Password={Database_Password};";
        //var conString = $"" +
        //    $"Server={Database_Server};" +
        //    $"Database={Database_Database};" +
        //    $"User ID={Database_User};" +
        //    $"Password={Database_Password};";
        return conString; 
    }
}

并按预期工作:

[INFO] 15.12.2020 11:23:13 >> "Using Connection String: Data Source=[redacted];Initial Catalog=[redacted];User Id=[redacted];Password=[redacted];"

但不知何故,当使用发布的SqlConnection初始化时,我得到了错误

'Microsoft.ACE.OLEDB.12.0'-Provider 未在本地计算机上注册。

现在,有几点需要注意:

有没有人有关于这个主题的一些重要信息?也许我错过了一些东西,或者遇到了类似的问题?

提前致谢!

编辑:

正如评论和一个答案中提到的,这是一个访问错误。初始化时没有抛出我的异常SqlConnection,而是在使用 LinqToExcel 中的一些东西时抛出了异常。不幸的是,我误解了这一点。

关于“Microsoft Access Database Engine 2010 Redistributable”的答案似乎是解决方案。

标签: c#.netsqlconnection

解决方案


我遇到了类似的问题,我通过在服务器上安装 Microsoft Access Database Engine 2010 Redistributable 解决了这个问题。但我的应用程序使用 excel 工作簿。

Microsoft Access 数据库引擎 2010 可再发行组件


推荐阅读