有没有办法从部署的报告 ssrs 报告中获取原始 XML 代码到报告服务器?

Is there a way to get the original XML code from a deployed report ssrs report to the reporting server?

我正在尝试为我们在报告服务器上部署的所有报告创建备份,因为我没有很多权限,这被证明是困难的。

我尝试的第一件事是使用 XML FILE 和 Report Data 创建一个订阅,并将其导出到一个文件夹,当我尝试打开保存后的文件时,它只是 xml 在 ssrs.

第二次尝试是直接从 sql 服务器获取 xml,这就是布局需要使用以下查询的方式

    Select 
    Name as ReportName
    ,CONVERT(XML,CONVERT(VARBINARY(MAX),Content)) AS ReportContent 
    from Catalog
    Where Name ='report_name' 

唯一的问题是我无法找到一种方法将 xml 部分自动保存到一个单独的文件中,我们可以使用它来备份,因为我们想每月备份我们的报告。

有没有办法以这种方式将我们所有的报告保存在服务器上?

(对 Overflow 还很陌生,所以如果需要更多信息,请告诉我)

谢谢

bretstateham.com 的 Courtest(我刚刚测试过并且有效):

WITH ItemContentBinaries AS
(
  SELECT
     ItemID,Name,[Type]
    ,CASE Type
       WHEN 2 THEN 'Report'
       WHEN 5 THEN 'Data Source'
       WHEN 7 THEN 'Report Part'
       WHEN 8 THEN 'Shared Dataset'
       ELSE 'Other'
     END AS TypeDescription
    ,CONVERT(varbinary(max),Content) AS Content
  FROM ReportServer.dbo.Catalog
  WHERE Type IN (2,5,7,8)
),
--The second CTE strips off the BOM if it exists..
ItemContentNoBOM AS(
  SELECT
     ItemID,Name,[Type],TypeDescription
    ,CASE
       WHEN LEFT(Content,3) = 0xEFBBBF
         THEN CONVERT(varbinary(max),SUBSTRING(Content,4,LEN(Content)))
       ELSE
         Content
     END AS Content
  FROM ItemContentBinaries
)
--The old outer query is now a CTE to get the content in its xml form only...
,ItemContentXML AS
(
  SELECT
     ItemID,Name,[Type],TypeDescription
    ,CONVERT(xml,Content) AS ContentXML
 FROM ItemContentNoBOM
)
--now use the XML data type to extract the queries, and their command types and text....
SELECT
     ItemID,Name,[Type],TypeDescription,ContentXML
    ,ISNULL(Query.value('(./*:CommandType/text())[1]','nvarchar(1024)'),'Query') AS CommandType
    ,Query.value('(./*:CommandText/text())[1]','nvarchar(max)') AS CommandText
FROM ItemContentXML
--Get all the Query elements (The "*:" ignores any xml namespaces)
CROSS APPLY ItemContentXML.ContentXML.nodes('//*:Query') Queries(Query)