excel - 未找到数据源名称且未指定默认驱动程序”。无法获取连接“DestinationConnectionOLEDB”
问题描述
我创建了一个 SSIS 包来将 excel 导入 sql。我已经通过表达式设置了连接字符串和excel文件路径。
之后,我尝试通过 c# WPF 应用程序调用包
Microsoft.SqlServer.Dts.Runtime.DTSExecResult
并传递连接字符串和excel路径的值。我的代码如下所示
Application app = new Application();
Package package = null;
//Load the SSIS Package which will be executed
package = app.LoadPackage("D:\\EMS-Docs\\new\\SSIS\\SSISProject\\obj\\Development\\Package2.dtsx", null);
//Pass the varibles into SSIS Package
//Microsoft.SqlServer.Dts.Runtime.Variables myVars = package.Variables;
package.Variables["User::EXLPath"].Value = "D:\\EMS-Docs\\SSIS\\PRACTICAL_1901_LOT-2.xls";
package.Variables["User::SQLConn"].Value = GlobalClass.TransactionalDBConnectionString;
//Execute the SSIS Package and store the Execution Result
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
错误
SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。源:“用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序”Hresult:0x80004005 描述:“[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序”。无法获取连接“DestinationConnectionOLEDB”。连接可能未正确配置,或者您可能对此连接没有正确的权限。
解决方案
错误原因
主要错误是:
“[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序”
这意味着主要问题出在连接管理器或连接字符串中。
可能的解决方案
- 确保您已将连接管理器和数据流任务
Delay Validation
属性设置为True
- 确保通过从 Visual Studio 执行具有相同变量值的包来传递有效的连接字符串值。
- 确保应用程序模式(32 位/64 位)与 ODBC 驱动程序版本相同。例如:如果您安装了 32 位 ODBC 驱动程序,请确保您在 32 位模式下运行应用程序
- 如果要连接到 SQL Server,则可以使用 SQL Native Client 或 Microsoft OLEDB Provider for SQL Server 而不是 ODBC 提供程序
附加信息
此外,您可以参考以下知识库文章,了解有关错误可能原因/解决方案的更多信息:
推荐阅读
- php - 如何从我的文件中显示每个选项的特定信息?
- javascript - 提交输入字段时更改按钮颜色
- c# - 从现有的层次结构创建不可变的集合结构
- php - 是否可以在 PHP 的 for 循环中使用三元运算符?
- mysql - 需要替换 mysql 列中的特定字符串
- python-3.x - 在熊猫中分组并按条件删除
- python - 如何编写 Python 递归算法来查找两个值(来自用户)之间的回文素数?
- java - 如何修复:“java.lang.ClassCastException:com.mashape.unirest.http.HttpResponse 无法转换为 org.apache.http.HttpResponse”
- sql - 基于子查询使用游标更新数据库的替代方法
- django - 如何在 Django 中获取组模型的所有选定权限