'Microsoft.ACE.OLEDB.12.0' 使用 SqlConnection 时未注册
'Microsoft.ACE.OLEDB.12.0' not registered when using SqlConnection
我遇到了以下情况:
我正在使用 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
初始化时,我得到了错误
The 'Microsoft.ACE.OLEDB.12.0'-Provider ist not registered on the local computer.
现在,有几点需要注意:
- 我的本地 SQL 服务器是 2017 Express - 这段代码在这里有效(谁会想到)
- 在目标SQL Server 2012 SP4 上,抛出如上所示的异常
有人知道关于这个话题的一些重要信息吗?也许我遗漏了什么,或者遇到了类似的问题?
提前致谢!
编辑:
如评论和一个答案中所述,这是一个访问错误。我的异常不是在初始化 SqlConnection
时抛出的,而是在使用 LinqToExcel 中的一些东西时抛出的。不幸的是我误解了。
关于“Microsoft Access Database Engine 2010 Redistributable”的答案似乎是解决方案。
我遇到了类似的问题,我已经通过在服务器上安装 Microsoft Access Database Engine 2010 Redistributable 解决了这个问题。但是我的应用程序使用 excel 工作簿。
我遇到了以下情况:
我正在使用 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
初始化时,我得到了错误
The 'Microsoft.ACE.OLEDB.12.0'-Provider ist not registered on the local computer.
现在,有几点需要注意:
- 我的本地 SQL 服务器是 2017 Express - 这段代码在这里有效(谁会想到)
- 在目标SQL Server 2012 SP4 上,抛出如上所示的异常
有人知道关于这个话题的一些重要信息吗?也许我遗漏了什么,或者遇到了类似的问题?
提前致谢!
编辑:
如评论和一个答案中所述,这是一个访问错误。我的异常不是在初始化 SqlConnection
时抛出的,而是在使用 LinqToExcel 中的一些东西时抛出的。不幸的是我误解了。
关于“Microsoft Access Database Engine 2010 Redistributable”的答案似乎是解决方案。
我遇到了类似的问题,我已经通过在服务器上安装 Microsoft Access Database Engine 2010 Redistributable 解决了这个问题。但是我的应用程序使用 excel 工作簿。