c# - 使用 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 未在本地计算机上注册。
现在,有几点需要注意:
- 我的本地 SQL Server 是 2017 Express - 这里的代码有效(谁会想到)
- 在目标 SQL Server 2012 SP4 上,抛出上述异常
有没有人有关于这个主题的一些重要信息?也许我错过了一些东西,或者遇到了类似的问题?
提前致谢!
编辑:
正如评论和一个答案中提到的,这是一个访问错误。初始化时没有抛出我的异常SqlConnection
,而是在使用 LinqToExcel 中的一些东西时抛出了异常。不幸的是,我误解了这一点。
关于“Microsoft Access Database Engine 2010 Redistributable”的答案似乎是解决方案。
解决方案
我遇到了类似的问题,我通过在服务器上安装 Microsoft Access Database Engine 2010 Redistributable 解决了这个问题。但我的应用程序使用 excel 工作簿。
推荐阅读
- ruby - 如何将数字列表与具有数字列表的另一个文件匹配?
- java - 无需任何数学运算即可使用双底数和整数指数求幂。Java中的库
- javascript - 如何在 React 上实现“跳转到内容”的 Web 可访问性功能?
- python - 求解单项和多项式 Python 类
- javascript - 如何使用 Hooks 设置状态?
- python - 尝试按数字和字母顺序对这个地址列表进行排序
- regex - 使用 spark 删除 txt 文件中的特殊字符
- java - 如何在文本文件中保留句子、行空间和段落
- g1ant - 为什么“ie.waitforcomplete 10000”不起作用?
- django - Django:模板需要根据您的身份返回每个项目的结果