首页 文章

SSIS连接管理器登录失败

提问于
浏览
6

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

现在我有一个SSIS包,我根据这个数据源创建了一个连接管理器(“来自数据源的新连接......”) .

在包控制流程中,我有一个SQL任务,它具有连接类型OLE DB,并且在此包中将连接设置为我的连接管理器 . 该任务向数据库发出一些更新语句,完全没有意义 .

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

错误:SSIS错误代码DTS_E_OLEDBERROR . 发生OLE DB错误 . 错误代码:0x80040E4D . OLE DB记录可用 . 来源:“用于SQL Server的Microsoft OLE DB提供程序”Hresult:0x80040E4D描述:“用户'myUser'登录失败 . ”

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

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

2 回答

  • 5

    ProtectionLevel“DontSaveSensitive”表示根本不会使用SSIS包保存密码 . SSIS这样做的原因是密码不会浮动在其他人可以获得它的地方 .

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

    这就是您需要配置文件的原因 . See my answer here

    您为连接字符串创建配置文件,但密码也不会保存到配置文件中 . 如果要包含密码,则必须手动编辑配置文件 . 但最好的方法是在计划执行SSIS包的作业时配置密码 . 这样可以将密码保存在一个安全的地方,并且它不会在SSIS包的所有地方浮动 .

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

  • 0

    我在BIDS中解决了这个问题 .

    1)首先,如果您没有配置文件,并且在连接管理器中使用sql server身份验证,那么您将在ole db源或目标任务中获得红叉 . 在执行sql任务时不会发生这种情况,因为ole db源和目标任务实际上必须运行select * from table query来获取要从中选择的表列表 . 由于密码未保存,因此会引发错误 .

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

相关问题