No SQL 2008 R2, estou reunindo algumas consultas administrativas nos metadados do SSRS para verificar a configuração adequada e outros tipos de coisas proativas.
Ao consultar o banco de dados ReportServer, consegui verificar relatórios, fontes de dados compartilhadas, etc. A única coisa com a qual estou tendo problemas é consultar qualquer valor dentro da Subscriptions.MatchData
coluna. Tudo desta coluna volta como NULL (a menos que eu retorne todo o conteúdo da coluna).
Especificamente, preciso do valor para EndDate
. Eu tentei vários ajustes sem sucesso, incluindo brincar com XPath, XMLNamespace, etc. Encontrei este exemplo básico de como deveria funcionar em 2005. O que há de diferente em 2008 para que isso não funcione? E como posso consultar esse valor no 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)
`
O que está atrapalhando são os namespaces XML nas tags. Para contornar isso, você precisa usar a
with XMLNameSpaces
cláusula.Dê uma chance a esta consulta. Eu testei isso em uma instância de teste (2008, não 2008 r2), portanto, talvez seja necessário alterar a definição real do namespace para corresponder aos seus dados xml.
Referência SQL BOL para a
WITH XMLNAMESPACES
cláusula:http://msdn.microsoft.com/en-us/library/ms177400.aspx