1

我已经使用 Sql Server 商业智能开发工作室创建了一个 dtsx 包,我正在使用 dtexec 实用程序执行它。使用 dtexec 我在运行时使用 /set 开关设置某些属性。所以我的命令看起来像:

dtexec /f "mypackage.dtsx" /set 
\Package.Connections[Destination].Properties[UserName];myUserName

当我在我的本地系统(开发它的那个)上运行它时,这非常有效。不幸的是,当我将此包复制到不同的系统并尝试运行此完全相同的命令时,我收到以下错误:

Warning: The package path referenced an object that could not be found: 
\Package.Connections[Destination].Properties[UserName]. This occurs when an 
attempt is made to resolve a package path to an object that cannot not be found.

将包移动到的新系统已安装 SSIS,并且运行与我的本地系统 (SP2) 相同版本的 Sql Server。也许我误解了 dtsx 包的预期用途,但我真的不明白这是如何/为什么会发生的。

4

5 回答 5

6

此步骤用于创建 XML 配置文件 (.dtsConfig),该文件可以保留您的敏感数据,例如连接字符串的密码,而没有可能使您难以将包从一台机器移动到另一台机器的保护级别。

在此示例中,假设您有一个到名为 MyDb 的 SQL 数据库的 OLE DB 连接。

  1. 控制流,属性:将“ProtectionLevel”设置为“DontSaveSensitive”

  2. 控制流,在空白处右键获取菜单:点击“包配置”

  3. 包配置管理器:勾选“启用包配置”;点击“添加”

  4. 包配置向导,选择配置类型:将“配置类型”设置为“XML配置文件”;选择“直接指定配置”单选按钮;点击“浏览...”

  5. 选择配置文件位置,填写“文件名”:[PackageName].dtsConfig(如果与包本身相同的文件夹和相同的文件名,则很容易,只是扩展名不同);点击“保存”

  6. 包配置向导,选择配置类型:点击“下一步>”

  7. 包配置向导,选择要导出的属性:遍历以下树节点并勾选其复选框;点击“下一步>”

    \[PackageName]\Connection Managers\MyDb\Properties\Connection 字符串

    \[包名]\Connection Managers\MyDb\Properties\Password

  8. 包配置向导,完成向导,点击“完成”

  9. 包配置管理器:单击“关闭”

  10. 解决方案资源管理器:右键单击菜单的根树,单击“添加”,“现有项...”,单击 [PackageName].dtsConfig,单击“添加”

  11. 解决方案资源管理器:双击 \Miscellaneous\[PackageName].dtsConfig 加载到编辑器;

  12. 主菜单:点击“编辑”,点击“高级”,点击“格式化文档”

  13. 遍历 XML 树节点:\DTSConfiguration\Configuration[Path="\Package.Connections[MyDb].Properties[Password]"]\ConfiguredValue; 输入数据库密码;保存文件

  14. Windows 资源管理器:导航并双击 [PackageName].dtsx

  15. 执行Package Utility,Configuration,点击“Add”,双击[PackageName].dtsConfig,点击“Execute”

当需要将 .dtsx 移动到另一台机器时,只需将其与 .dtsConfig 一起使用即可。希望这可以帮助。

干杯,阿里。

于 2009-01-15T08:51:55.877 回答
1

在您的控制流属性上,有一个名为“ProtectionLevel”的属性。如果您将其设置为“DontSaveSensitive”,那么在进行开发和测试时可能会减少您的头痛。对于需要安全性的生产场景,您可能需要找到另一个解决方案。

于 2009-01-06T22:03:07.290 回答
1

如果您在机器之间移动包,则需要创建一个部署实用程序。您的连接信息使用特定于您机器的密钥进行加密。

如果您转到 VS 中的项目属性,请选择部署实用程序部分并将 CreateDeploymentUtility 选项设置为 true。这将在 bin 文件夹中创建部署实用程序,然后您可以将所有内容复制到新机器,运行安装程序,一切正常。

于 2008-11-05T13:08:56.323 回答
1

在机器之间移动包并避免对包进行所有签名的最快方法如下。

在打开包的 Visual Studio 中,选择“保存 PackageName 的副本”为

然后你得到一个向导。最简单的一种可能是只选择文件存储。然后在向导的底部,您将看到保护级别。选择使用密码加密敏感数据。输入密码。

在您希望移动它的服务器上选择导入包,它会提示您输入密码。输入它,您的连接信息将正确移动到新服务器。

绝对不是最佳实践,但它是在测试服务器中快速移动事物的好方法。

于 2008-11-27T07:28:24.593 回答
0

以下是 MSDN 关于包安全的指南。设置包的保护级别

于 2011-10-21T14:33:38.990 回答