作业中运行SSIS包报加密错误

 SSIS包有一个必须理解的属性。这个属性告诉SSIS如何处理包内的敏感信息。常见的是连接字符串当中存储的密码。为什么这个信息非常重要?因为如果不正确设置保护级别的话,SSIS包可能变得无法使用。其他开发者可能无法打开包,又或者在执行包的时候运行失败。理解这些选项,可以使得你在这些潜在的问题发生之前就解决它们。在理想的情况下,你不需要保存任何敏感数据,然而现实当中各种环境大不相同。

我们看看这些保护级别分别是什么吧。

DontSaveSensitive

当包保存时,敏感数据将会被移除。这样会导致密码需要通过用户或者配置文件提供。

EncryptSensitiveWithUserKey

敏感数据将会被加密,而密钥是基于当前用户的配置文件。敏感数据只能够被保存它的用户打开。如果另一个用户打开包的话,所有敏感数据将会被替换为空白。这在用户把包移交给其他用户工作时会导致问题。

EncryptSensitiveWithPassword

敏感数据将会被保存在包当中,并且通过密钥加密。每次在设计页打开包时,你需要提供密码以解密还原敏感数据。如果你清除了密码,那么所有敏感数据将会被空白所替代。这很适合在多人开发的场景下使用。

EncryptAllWithPassword

这与EncryptSensitiveWithPassword的工作原理相似,只不过不仅是敏感数据,整个包都会被进行加密。在设计页打开包时需要提供密码,否则就没法看到任何包的信息。

EncryptAllWithUserKey

这与EncryptSensitiveWithUserKey的工作原理相似,只不过整个包都会被进行加密。只有创建包的用户才被允许打开包。

 ===========================================================

通常制作的dts包需要加密,在VS中调试时需要把项目和dts包的属性设置为EncryptSensitiveWithUserKey。

 

调试没问题后把dts包的保护级别改为EncryptAllWithPassword,并设置密码,这样才能在sql作业中正常运行。否则会报错: 无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B“该项不适于在指定状态下使用。”。可能您无权访问此信息。当发生加密错误时会出现此错误,请确保提供正确的密钥。

 

 

posted @ 2020-10-19 09:59  最萌小胡胡  阅读(539)  评论(0编辑  收藏  举报