我有一个SSIS包,该包从两个表(在不同的实例上)读取,执行合并联接,并使用条件拆分来更新源表之一。我设置了一个连接管理器,并使用链接服务器访问另一个实例上的表之一。在连接管理器中,我使用登录名和保存的密码,并具有对数据库和表的权限。它像Visual Studio中的冠军一样运行。当我将其部署到SQL Server 2016时,它通过验证失败,并显示错误“更新客户:错误:客户数据验证失败并返回错误代码0xC020801B。”
我尝试使用保存的密码将链接的服务器移至其自己的连接管理器。我还尝试在连接管理器中使用Windows身份验证。这些也不起作用。另外,当我搜索错误代码0xC020801B时,似乎什么也没出现。
编辑:
程序包保护级别为EncryptSensitiveWithUserKey。
编辑II:
我将连接管理器从Project连接管理器更改为Package连接管理器。我现在收到错误:
源:“ Microsoft SQL Server本机客户端11.0” H结果:0x80040E4D描述:“用户“集成”登录失败。”
用户集成有权访问所讨论的数据库和表。我也尝试删除登录名并使用Windows身份验证。我将服务器添加为登录名,并且在两个数据库上均具有db_datareader和db_datawriter权限。部署并执行程序包时,在链接服务器连接上出现错误:
源:“ Microsoft SQL Server本机客户端11.0” H结果:0x80040E4D描述:“用户'DOMAIN \ INSTANCE_NAME $'登录失败。”
答案 0 :(得分:2)
您正在使用ProtectionLevel“ EncryptSensitiveWithUserKey”,这意味着所有敏感数据(包括密码)都将根据登录名使用Windows加密进行加密。
将程序包部署到服务器时,它无法解密这些密码。
请使用“ DontSaveSensitive”并使用包参数提供所有密码。
或者更好的选择是使用Windows身份验证并为您的服务帐户授予所需的特权。
答案 1 :(得分:-1)
我找到了这个...
可能值得在服务器上检查驱动程序等