求救高人:SSIS包当中无法保存oracle密码

blacksoul 2007-03-28 04:53:00
我建立了一个从oracle10g上到sql 2005的数据迁移和抽取的ssis包,建立好的dtsx包可以正常运行.但是当把包发布之后执行.里面保存的oracle连接字符串始终没有保存密码,就算我在建立的时候勾选了保存密码也不行.单独执行包的时候可以自己修改字符串可以连接到数据库.但是一旦我讲包放入到sql server的代理作业之后就始终无法更改连接字符串了..改了之后点击确定他就自己变回来了.以至于使代理无法工作..求救啊...
...全文
1465 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzgtly_0208 2011-11-10
  • 打赏
  • 举报
回复
设置配置文件的属性的时候,仅剩下ConnectionString 属性即可。
wzgtly_0208 2011-11-10
  • 打赏
  • 举报
回复
怎么搞定的啊?我也遇到了同样的问题?
blacksoul 2007-07-26
  • 打赏
  • 举报
回复
虽然已经搞定了..但是还是相当的感谢邹建大哥.谢谢
zjcxc 2007-04-03
  • 打赏
  • 举报
回复
1. 如果你的密码这类信息是用密码来保护的, 那么在创建job的时候, 我测试过, 要直接用命令行来调用包

2. 如果你用userkey来保护密码, 那么你执行包的身份必须与创建包的身份一样, 也就是说, 你要在sql中建立包的建立者的proxy

3. 如果你是用 ServerStorage 来保留密码的, 我测试了, 和2差不多
zjcxc 2007-04-03
  • 打赏
  • 举报
回复
如果要在包中保存密码, 你需要将包的 DTSProtectionLevel 设置为非DontSaveSensitive值

如果你的包在Business Intelligence Development Studio 中开发, 也不能设置为 ServerStorage, 可以在部署的时候, 通过部署向导设置这个值

zjcxc 2007-04-03
  • 打赏
  • 举报
回复
在 Business Intelligence Development Studio 中初次开发 SQL Server 2005 Integration Services (SSIS) 包时,可以设置该包的保护级别。以后当部署包时,在 SQL Server Management Studio 中将包导入 Integration Services 或从中导出包时,或者在将包从 Business Intelligence Development Studio 复制到 SQL Server、SSIS 包存储区或文件系统服务时,都可以更新包的保护级别。例如,如果在计算机上使用某个用户密钥保护级别选项创建并保存包,则在将包提供给其他用户时,很可能需要更改保护级别,否则,他们将无法打开该包。

下表介绍 Integration Services 提供的保护级别。括号中的值是来自 DTSProtectionLevel 的值。在 Business Intelligence Development Studio 中处理包时,这些值出现在用来配置包属性的“属性”窗口中。

保护级别 说明
不保存敏感数据 (DontSaveSensitive)
保存包时不保存包中的敏感信息。这种保护级别不进行加密,但它防止标记为敏感的属性随包一起保存,因此其他用户将无法使用这些敏感数据。如果其他用户打开该包,敏感信息将被替换为空白,用户必须提供这些敏感信息。

使用密码加密所有数据 (EncryptAllWithPassword)
使用密码加密整个包。使用用户在创建包或导出包时提供的密码加密包。若要在 SSIS 设计器中打开包或使用 dtexec 命令提示实用工具运行包,用户必须提供包密码。如果没有密码,用户将无法访问或运行包。

使用用户密钥加密所有数据 (EncryptAllWithUserKey)
使用基于用户配置文件的密钥加密整个包。只有使用同一配置文件的同一个用户才能加载此包。使用基于创建包或导出包的用户的密钥来加密包。只有创建包或导出包的用户才可以在 SSIS 设计器中打开包或使用 dtexec 命令提示实用工具运行包。

使用密码加密敏感数据 (EncryptSensitiveWithPassword)
只使用密码加密包中的敏感信息。DPAPI 用于此加密。敏感数据作为包的一部分保存,但数据是使用当前用户在创建包或导出包时提供的密码加密的。若要在 SSIS 设计器中打开包,用户必须提供包密码。如果不提供该密码,则包虽然可以打开但其中不包含敏感数据,当前用户必须为敏感数据提供新值。如果用户试图在不提供密码的情况下执行包,则包执行将会失败。有关密码和命令行执行的详细信息,请参阅 dtexec 实用工具。

使用用户密钥加密敏感数据 (EncryptSensitiveWithUserKey)
只使用基于当前用户的密钥加密包中的敏感信息。只有使用同一配置文件的同一个用户才能加载此包。如果其他用户打开该包,敏感信息将被替换为空白,当前用户必须为敏感数据提供新值。如果用户试图执行该包,则包执行将会失败。DPAPI 用于此加密。

依靠服务器存储进行加密 (ServerStorage)
使用 SQL Server 数据库角色保护整个包。只有将包保存到 SQL Server msdb 数据库后,才支持此选项。在将包从 Business Intelligence Development Studio 保存到文件系统时,不支持此选项。


使用密码加密包的包保护级别还要求您提供密码。如果将保护级别从不使用密码的级别更改为使用密码的级别,则系统将提示您输入密码。

加密(如保护级别所使用的加密)是通过使用 Microsoft Data Protection API (DPAPI) 来执行的,DPAPI 是 Cryptography API (Crypto API) 的一部分。

Integration Services 将 .NET Framework 类库 (FCL) 中提供的 Triple DES 加密算法(其密钥长度为 192 位)用于使用密码的保护级别。

对于使用用户密钥的保护级别,Integration Services 使用 DPAPI 标准。有关 DPAPI 的详细信息,请参阅位于 http://msdn.microsoft.com/library 的 MSDN Library。

在使用“不保存敏感数据”(DontSaveSensitive) 保护级别时,不保存包中的敏感信息。

对于所有值,敏感信息定义为:

连接字符串的密码部分。但是,如果选择加密所有数据的选项,则整个连接字符串都将被视为敏感信息。


标记为敏感的任务生成的 XML 节点。XML 节点的标记由 Integration Services 控制,用户无法更改。


所有变量都标记为敏感信息。标记的变量由 Integration Services 控制。


也可以使用固定的数据库级角色来保护保存到 msdb 数据库的包。Integration Services 包括三个用于将权限分配给包的固定数据库级角色:db_dtsadmin、db_dtsltduser 和 db_dtsoperator。有关详细信息,请参阅 Integration Services 角色和数据库级别的角色。
zjcxc 2007-04-03
  • 打赏
  • 举报
回复
密码这类属性敏感信息, SSIS中强化了这方面的管理(因此也造成了麻烦)

Integration Services 支持保护包中的敏感数据。通常,标识为敏感的属性包含如密码或连接字符串这样的信息。Integration Services 会设置这些属性的敏感特性,而且敏感特性无法更改。如果编写自定义任务、连接管理器或数据流组件,则可以指定 Integration Services 应该将哪些属性视为敏感属性。

Integration Services 自动检测敏感属性,然后根据指定的包保护级别处理这些属性。例如,如果包所使用的是利用密码加密敏感信息的保护级别,则包中标识为敏感的所有属性的值都是加密的
zjcxc 2007-04-03
  • 打赏
  • 举报
回复
把密码存储在变量中, 然后将对oracle的连接中的连接字符串设置为表达式, 将密码拼进去, 这样就可以解决密码的问题.
OracleRoob 2007-04-03
  • 打赏
  • 举报
回复
拿个小本本儿,记下来...
Shiro8558 2007-03-30
  • 打赏
  • 举报
回复
安全方式

建议用配置文件
byhum 2007-03-29
  • 打赏
  • 举报
回复
帮顶
blacksoul 2007-03-28
  • 打赏
  • 举报
回复
自己顶一下..

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧