SQL Server - 查询XML节点DTS:ConnectionManager DTS:T-SQL中的名称

时间:2013-05-29 22:11:30

标签: sql-server xml

我正在尝试查询DTS中两个“字段”的内容:Name =“ConnectionString”。 (具体来说,以“”开头的文本。可以有多个 - 在这个例子中,有2个。

我无法弄清楚如何查询它。在冒号和dts之间:dts:,我很难过

任何帮助表示赞赏。

<DTS:Executable xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:ExecutableType="SSIS.Package.2">
  <DTS:Property DTS:Name="SuppressConfigurationWarnings">0</DTS:Property>
  <DTS:ConnectionManager>
    <DTS:Property DTS:Name="DelayValidation">0</DTS:Property>
    <DTS:ObjectData>
      <DTS:ConnectionManager>
        <DTS:Property DTS:Name="Retain">0</DTS:Property>
        <DTS:Property DTS:Name="ConnectionString">Data Source=myserver;Initial Catalog=mydbname;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=false;Application Name=blah;</DTS:Property>
      </DTS:ConnectionManager>
    </DTS:ObjectData>
  </DTS:ConnectionManager>
  <DTS:ConnectionManager>
    <DTS:ObjectData>
      <DTS:ConnectionManager>
        <DTS:Property DTS:Name="Retain">0</DTS:Property>
        <DTS:Property DTS:Name="ConnectionString">Data Source=myserver2;Initial Catalog=mydb2;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=false;</DTS:Property>
      </DTS:ConnectionManager>
    </DTS:ObjectData>
  </DTS:ConnectionManager>
</DTS:Executable>

1 个答案:

答案 0 :(得分:1)

这并不完全清楚,但我假设您想要连接字符串本身。所以,让我们假设该文档位于名为XML的名为XmlColumn的{​​{1}}类型列中,然后您可以执行此操作...

@XmlTable

注意,我们需要处理XML namespace using the WITH statement并且开头的分号不是错误的。然后我们将XPath表达式传递给;WITH XMLNAMESPACES ('www.microsoft.com/SqlServer/Dts' as dts) SELECT Con.Str.value('.', 'varchar(400)') FROM @XmlTable CROSS APPLY XmlColumn.nodes('//dts:Property[@dts:Name="ConnectionString"]') as Con(Str) 类型的nodes()方法,以便检索所需的项目。

在行动here at SQL Fiddle中查看。