在SQL2008SSRS中,我收集了一些关于R2元数据的管理查询,以检查正确的配置和其他一些积极主动的东西。
在查询ReportServer db时,我成功地检查了报表、共享数据源等。我遇到困难的一件事是查询Subscriptions.MatchData列中的任何值。该列中的所有内容都返回为NULL (除非我返回该列的全部内容)。
具体来说,我需要EndDate的值。我尝试过一些调整,但都没有效果,包括玩XPath、XMLNamespace等。我发现了2005年它应该如何工作的基本例子。2008年有什么不同之处在于,这是行不通的?如何在2008年的R2中查询此值?
`
SELECT
[Description]
,x.m.value('StartDateTime[1]','varchar(30)') AS StartDateTime
,x.m.value('EndDate[1]','varchar(10)') AS EndDate
FROM
(
SELECT
[description]
,CAST(MatchData AS XML) AS MatchData
FROM ReportServer.dbo.Subscriptions
) AS P
CROSS APPLY MatchData.nodes('//ScheduleDefinition') x(m)
`发布于 2012-05-08 08:11:33
将其抛出的是标记中的XML名称空间。为了解决这个问题,您需要使用with XMLNameSpaces子句。
让这个查询试一试。我已经在一个测试实例(2008年而不是2008年r2)上测试了这一点,所以您可能需要更改实际的命名空间定义来匹配您的xml数据。
with xmlnamespaces('http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices' as rs)
SELECT
[Description]
,m.value('rs:StartDateTime[1]','varchar(30)') AS StartDateTime
,m.value('rs:EndDate[1]','varchar(30)') AS EndDate
FROM
(
SELECT
[description],
CAST(MatchData AS XML) AS MatchData
FROM ReportServer.dbo.Subscriptions
) AS P
CROSS APPLY MatchData.nodes('/ScheduleDefinition') x(m)WITH XMLNAMESPACES子句的SQL引用:
http://msdn.microsoft.com/en-us/library/ms177400.aspx
https://dba.stackexchange.com/questions/17538
复制相似问题