如何在不应用可执行代码或执行包文件的情况下修改.dtsx文件中的变量值

时间:2015-04-16 14:49:56

标签: xml ssis

是否有一种简单的方法可以修改SSIS .dtsx包文件(XML格式)中定义的变量的值,而无需使用msxsl.exe或自定义等效的可执行文件?在使用dtutil将文件复制到Integration Services的MSDB之前,需要先更新该文件。我知道我可以使用dtexec更新变量,但是然后运行包文件,此时我不想这样做。

我在Visual Studio 2010中创建了一个.dtsx包文件,需要将其部署到本地运行SQL Server 2012的客户端服务器计算机上。我不知道其服务器的名称,这些信息必须更新为.dtsx包文件到达时,由现场有人更新。我无权访问客户端服务器,他们不允许我发送可执行文件。需要更新的变量可以是服务器名称(不一定是安装包的服务器,否则将使用System :: MachineName变量),数据库名称或站点唯一的其他内容。我的计划是使用在命令提示符下运行的批处理文件来执行更新,并提示用户提供参数的值,然后将这些参数传递给.dtsx文件。我无法使用PowerShell,因为这会因客户而异。运行批处理脚本(更新.dtsx文件并将更新复制到Integration Services)后,将删除.dtsx文件和所有临时脚本。

例如,我在SSIS包中应用错误处理,并希望使用名为EmailAlert的用户变量中定义的电子邮件地址发送电子邮件警报。收到警报的人将从一个客户站点到下一个站点站点不同。该变量在.dtsx文件的XML中如下所示,其中" myemail@xxxx.com"价值需要被替换。

<DTS:Variable
  DTS:CreationName=""
  DTS:DTSID="{F988AD8E-CCE3-4CC1-A447-2F7D3184577B}"
  DTS:IncludeInDebugDump="6789"
  DTS:Namespace="User"
  DTS:ObjectName="AlertEmail">
  <DTS:VariableValue
    DTS:DataType="8">myemail@xxxx.com</DTS:VariableValue>
</DTS:Variable>

我希望有类似于dtutil或dtexec的内容,它将识别.dtsx文件中特定变量的特定XML子节点并更新它,保存文件,以便可以轻松地将其复制到Integration Services与dtutil。否则,使用批处理文件中的自定义代码进行编辑可能是对每个变量执行三行块更新的唯一选项(应用上面的示例)。

  DTS:ObjectName="AlertEmail">
  <DTS:VariableValue
    DTS:DataType="8">myemail@xxxx.com</DTS:VariableValue>

由于

0 个答案:

没有答案