【发布时间】:2013-08-03 00:05:42
【问题描述】:
在this tutorial 之后,我尝试使用 PowerShell 从 SQL Server 检索 xml 数据,但我只取回了一个元素。
这是一个显示实际数据的查询:
但是运行这个脚本我只能得到一个元素:
$SQLServer = 'MYSERVER,1433'
$SQLDBName = "test"
$Query =
@'
USE test
SELECT EventLogXML FROM ForwardedEvents
'@
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $Database; Integrated Security = True"
$SqlConnection.open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $Query
$SqlCmd.Connection = $SqlConnection
$xr = $SqlCmd.ExecuteXmlReader()
$xd = New-Object System.Xml.XmlDataDocument
$xd.Load($xr)
$xr.Close()
$SQLConnection.Close()
$xd
$xd 只有一个元素。我做错了什么?
---编辑 我可以通过 $xd.outerxml 来确认它只有一个 xml 文档,它显示了完整的文档。它只是我存储在 EventLogXML 列中的数千个事件 xml 文档中的一个。
【问题讨论】:
-
当然,每行有一个文档。由于您只创建一个文档,因此您只从其中的一行中获取信息也就不足为奇了。您是否期望以某种方式将所有行中的所有这些单独的 xml 组合在一起?如果有,怎么做?
-
嗯,我在这里缺少一些基本的东西。我认为 $xd 应该是一个包含所有行的对象。它不是?我想返回列中可以循环的所有 xml 对象的数组。我以前从未像这样使用过 sql,所以我想我误解了脚本实际上在做什么。
-
哎呀,对不起,我的错。我将
XmlDataDocument误读为XmlDocument。请忽略我之前的评论。
标签: sql-server xml powershell