10

我有一个 SSIS 项目,其中我定义了一个数据源(提供程序:SQL Server 的本机 OLE DB/Microsoft OLE DB 提供程序)。当我手动打开它并点击“测试连接”按钮时,一切正常。连接管理器可以使用连接字符串、用户和密码访问数据库。

现在我有一个 SSIS 包,我在其中创建了一个基于此数据源的连接管理器(“来自数据源的新连接......”)。

在包控制流中,我有一个 SQL 任务,它的连接类型为 OLE DB,并且在这个包中将连接设置为我的连接管理器。该任务向数据库触发了一些更新语句,一点也不奇怪。

现在,当我调试整个事情时,我总是会遇到同样的错误:

错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E4D。OLE DB 记录可用。来源:“Microsoft OLE DB Provider for SQL Server”Hresult:0x80040E4D 描述:“用户 'myUser' 登录失败。”

仅供参考:myUser 等于我的数据库的用户名。

所以我的问题是:我在这里缺少什么?我真的看不出这里有什么问题。我真的被困在这里了。非常感谢任何提示!

4

2 回答 2

7

ProtectionLevel "DontSaveSensitive" 意味着密码根本不会与 SSIS 包一起保存。SSIS 这样做的原因是密码不会在其他人可以得到它的地方浮动。

因此,当您输入密码并点击“测试连接”按钮时,一切正常。但是当您在调试模式(或生产环境)下运行时,您没有密码。因此,当然,登录失败。

这就是您需要配置文件的原因。 在这里查看我的答案

您为连接字符串创建了一个配置文件,但密码也不会保存到配置文件中。如果您希望它包含密码,则必须手动编辑配置文件。但最好的方法是在安排执行 SSIS 包的作业时配置密码。这样可以将密码保存在一个安全的地方,并且它不会随 SSIS 包到处飘荡。

当然,在调试时,您需要一个手动输入密码的配置文件。但是该配置文件在部署到生产环境时不会随包一起提供。生产配置文件应该有一个空白密码。密码应该存在于执行包的计划作业中。

于 2013-05-30T12:35:25.390 回答
0

我已经在 BIDS 中解决了这个问题。

1)首先,如果您没有配置文件并且在您的连接管理器中使用的是 sql server 身份验证,那么您将在 ole db 源或目标任务中得到一个红十字。它不会在执行 sql 任务中发生,因为 ole db 源和目标任务实际上必须运行 select * from table 查询才能让您从中选择表的列表。由于未保存密码,因此会引发错误。

2)如果您确实有配置文件,您仍然会面临类似的问题。但是使用配置文件,您可以编辑并手动插入密码。它对我有用。ole db 源和目标任务未显示任何红十字。

于 2015-06-04T15:16:21.017 回答