我正在尝试查询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>
答案 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中查看。