我正在尝试查询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>发布于 2013-05-30 06:59:31
这并不完全清楚,但我假设您想要连接字符串本身。因此,假设文档位于一个名为XmlColumn的XML类型列中,该列位于一个名为@XmlTable的表中,那么您可以这样做…
;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)注意,我们需要处理XML namespace using the WITH statement,并且开头的分号不是错误的。然后,我们将一个XPath表达式传递给xml类型的nodes()方法,以便检索所需的项。
在动作here at SQL Fiddle中查看它。
https://stackoverflow.com/questions/16824772
复制相似问题