【问题标题】:ssis password package configurationssis密码包配置
【发布时间】:2014-12-15 22:17:14
【问题描述】:

我创建了一个 SSIS 包。几年前我在 SSIS 工作过,所以我很生疏:)。

我有 3 个连接管理器 - DataWarehouse、DataWarehouse_PROD、DataWarehouse_TEST。

我正在尝试将连接字符串从 DataWarehouse_PROD 或 DataWarehouse_TEST 连接管理器分配给 DataWarehouse 连接管理器,具体取决于使用脚本任务可能是 PROD 或 TEST 的另一个包变量。

我已经在 dtsconfig 文件中手动编辑了每个连接管理器的密码和连接字符串属性(根据许多论坛条目说明这是有效的)。我假设我可以从脚本任务中加载的包配置中检索连接字符串和密码值。我发现当我拉出连接时密码被删除了。这是我的代码的 sn-p:

string connectionString = Dts.Connections["ACORDDataWarehouse_PROD"].ConnectionString;
Dts.Connections["ACORDDataWarehouse"].ConnectionString = connectionString;

当我检查代码中的 connectionString 变量时,密码属性不是连接的一部分。如果我手动将密码添加到代码中的连接字符串,则连接设置正确,我可以检索数据。根据我在使用包配置时所读到的内容,配置是在将包加载到 SSIS 时读取的,因此这些手动更改应该存在。

我错过了一些东西。 . .

感谢您的帮助。 汤姆

【问题讨论】:

  • 您是否可以选择使用 windows 身份验证而不是 sql 身份验证?
  • 我更喜欢使用 SQL 身份验证。为什么,两者相对于 SSIS 有区别吗?
  • 通过 Windows 身份验证,您无需在任何地方保存密码,因此您可以避免所有与包保护级别、敏感数据等有关的问题。
  • 这听起来很有趣。但这在开发时会很麻烦,因为您必须登录到该 AD 帐户,因为 SSIS 将使用登录者的 AD 凭据连接到数据库。如果您可以指定要使用的其他 AD 帐户而不是用户登录的帐户,这将是一件好事。
  • 开发时可以使用Run As 运行 BIDS 工具以作为其他人运行,这无疑是一个 PITA。如果在 SQL 代理中运行,您可以使用代理。但是,在“成熟”环境中,您将拥有一个所有开发人员都可以通过 Windows 访问(通过组)的 DEV 数据库,因此这不是问题。我不喜欢 SQL 帐户,因为一旦您将密码提供给某人,他们就可以随心所欲地传递密码,而您实际上不知道谁拥有访问权限,并且您无法撤销对单个人的访问权限,无法识别谁实际登录

标签: sql-server-2008 ssis


【解决方案1】:

我发现了 # 个讨论使用表达式的线程。我创建了 2 个包变量 - 一个用于环境,一个用于密码。我确实将 ProtectionLevel 设置为 EncryptAllWithPassword。对于需要动态的连接管理器,我在表达式生成器中为 ConnectionString 属性指定了一个表达式,该属性设置了 Test 或 Prod 的值。结果证明这是一个简单的解决方案。

感谢您的建议!

我想再添加几个 cmets 来阐明我的解决方案。很多时候我找到了可能的解决方案,但写起来有些不完整。

我最终为我需要的 2 个变量(环境和密码)使用了间接包配置。该表达式在加载包时获取值。下面是我在连接管理器属性中使用的表达式。此外,当您更改服务器上的间接 .dtsx 文件中的值时,您必须再次重新部署相同的包才能使更改生效。

@[User::Environment] == "Prod"?"Data Source=ProdServer;User ID=ProdUsername;Password=" 
+ @[User::Password] + ";Initial Catalog=ProdDatabase;Provider=SQLNCLI10.1;Auto  
Translate=False;":"Data Source=TestServer;User ID=TestUsername;Password=" + 
@[User::Password] + ";Initial Catalog=TestDatabase;Provider=SQLNCLI10.1;Auto         
Translate=False;"

【讨论】:

  • 感谢您返回并发布您的解决方案,这可能对其他人有所帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
相关资源
最近更新 更多