我用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软件包的预期用途有些误解,但我真的不明白这是怎么回事。
答案 0 :(得分:6)
此步骤用于创建XML配置文件(.dtsConfig),该文件可以保留敏感数据(如连接字符串的密码),而不具有可能使您难以将包从一台计算机移动到另一台计算机的保护级别
在此示例中,假设您有一个名为MyDb的SQL数据库的OLE DB连接。
控制流程,属性:将“ProtectionLevel”设置为“DontSaveSensitive”
控制流,右键单击空白区域以获取菜单:单击“包配置”
包配置管理器:勾选“启用包配置”;点击“添加”
包配置向导,选择配置类型:将“配置类型”设置为“XML配置文件”;选择“直接指定配置”单选按钮;点击“浏览...”
选择配置文件位置,填写“文件名”:[PackageName] .dtsConfig(如果包文件和文件名本身相同,只需不同的扩展名即可轻松实现);点击“保存”
包配置向导,选择配置类型:单击“下一步>”
包配置向导,选择要导出的属性:遍历以下树节点并勾选其复选框;点击“下一步>”
\ [PackageName] \ Connection Managers \ MyDb \ Properties \ Connection String
\ [PackageName] \ Connection Managers \ MyDb \ Properties \ Password
包配置向导,完成向导,单击“完成”
包配置管理器:点击“关闭”
解决方案资源管理器:右键单击菜单的根树,单击“添加”,“现有项目...”,单击[PackageName] .dtsConfig,单击“添加”
Solution Explorer:双击\ Miscellaneous \ [PackageName] .dtsConfig加载到编辑器中;
主菜单:点击“编辑”,点击“高级”,点击“格式化文档”
遍历XML树节点:\ DTSConfiguration \ Configuration [Path =“\ Package.Connections [MyDb] .Properties [Password]”] \ ConfiguredValue;键入数据库密码;保存文件
Windows资源管理器:导航并双击[PackageName] .dtsx
执行包工具,配置,单击“添加”,双击[PackageName] .dtsConfig,单击“执行”
当需要将.dtsx移动到另一台机器时,只需将其与.dtsConfig一起使用即可。希望这会有所帮助。
干杯,阿里。
答案 1 :(得分:1)
如果您要在机器之间移动包,则需要创建部署实用程序。您的连接信息使用特定于您计算机的密钥进行加密。
如果转到VS中的项目属性,请选择部署实用程序部分并将CreateDeploymentUtility选项设置为true。这将在bin文件夹中创建部署实用程序,然后您可以将所有内容复制到新计算机,运行安装程序,并且一切都可以正常工作。
答案 2 :(得分:1)
在机器之间移动包并避免所有包签名的最快方法如下。
在打开包的Visual Studio中,选择“保存PackageName的副本”为
然后你会得到一个向导。最容易的就是选择文件存储。然后在向导的基础上,您将看到保护级别。选择使用密码加密敏感数据。输入密码。
在服务器上,您希望将其移动到选择“导入包”,它将提示您输入密码。输入它,您的连接信息将正确移动到新服务器。
绝对不是最佳做法,但它是快速移动测试服务器的好方法。
答案 3 :(得分:1)
在控制流属性上,有一个名为“ProtectionLevel”的属性。如果将其设置为'DontSaveSensitive',那么在进行开发和测试时,这可能会减少您的头痛。对于需要安全性的生产场景,您可能需要找到另一种解决方案。
答案 4 :(得分:0)
以下是MSDN关于包安全性的指南。 Setting the Protection Level of Packages