【发布时间】: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