【IT168 应用技巧】对于大多数组织而言,报表是一项重要功能,而能够可靠报告 Microsoft System Center Configuration Manager (SCCM) 的各项功能也同样重要。在 Systems Management Server 和 SCCM 的多个版本中,报表功能并未出现大的变化。而在 SCCM R2 版本中,报表经历了一次重大的改变,即能够与 SQL Server Reporting Services (SSRS) 进行交互并可使用 SSRS。这项改变使报表能够使用 SSRS 提供的很多可靠功能。与任何新技术一样,SSRS 也需要经历一个学习的过程,但其所具有的好处还是值得一学的。本文将介绍 SCCM 与 SSRS 之间的集成,并通过逐步讲解一个非常简单的示例来介绍如何在 SSRS 中生成报表,以及如何发布报表以便在 SCCM 中使用。
SCCM 和 SSRS 最好一起使用
在 R2 之前,SCCM 报表引擎的变化很小。标准报表功能可以满足大多数功能的需要,但同时也存在一些限制,尤其是当报表需求要求采用可靠而灵活的方法以图形方式显示数据时更是如此。SSRS 使您可以根据自己的特定需要以近乎随心所欲的方式创建报表。
SCCM 与 SSRS 的集成需要安装 SCCM R2,并需要在目标 SQL 服务器上安装 SQL 的 SSRS 组件。此外,还需要在 SSRS 服务器上安装 Reporting Services 点站点系统角色。本文并未详细介绍如何安装和配置 SSRS 以便与 SCCM 进行交互,但此过程并不复杂。
安装 R2 并配置 SSRS 集成后,我们可以选择要使用的报表引擎。图 1 显示了安装 R2 后的报表节点。
▲
图 1 安装 R2 后的 System Center Configuration Manager 报表节点
“Reports”(报表)节点将使用传统的 SCCM 报表引擎访问报表。“Reporting Services”节点是 SSRS 部署的报表的访问点。展开“Reporting Services”节点(如图 1 所示)将显示配置为 Reporting Services 点的服务器以及包含部署到 SSRS 的所有报表的文件夹。如果在安装 R2 并完成 SSRS 配置后选择“All Reports”(所有报表)节点,将不显示任何报表。要向 SSRS 中添加报表,可以将标准 SCCM 报表转换为 SSRS 格式或编写您自己的报表。
转换标准报表以用于 SSRS 很简单,只需右键单击承载 Reporting Service 点角色的服务器名称(位于图 1 所示的“Reporting Services”节点的正下方),然后选择“Copy Reports to Reporting Services”(将报表复制到 Reporting Services),如图 2 所示。
▲
图 2 简单转换标准报表以用于 SSRS 只需右键单击。
随即将启动一个向导,该向导将引导您转换所有或选定的标准 SCCM 报表以便用于 SSRS。该向导将收集相关信息以生成 SSRS 数据源、确定 SSRS 安全性的处理方式(Windows Integrated 是通用选项),以及将哪些报表转换和部署到 SSRS。完成向导后,将转换和部署报表。完成后,“All Reports”(所有报表)视图将包含与您在标准 SCCM 报表中通常看到的内容相似的数据。图 3 显示了转换后可能看到的内容示例。
▲
图 3 转换选定用于 SQL Server Reporting Services 的 System Center Configuration Manger 报表后显示数据的“All Reports”窗口。
报表的命名格式与标准 SCCM 报表相同。要显示报表,只需右键单击此报表,然后选择“Run”(运行)。在右键单击菜单中,除了“Run”(运行)以外,您还会注意到一个用于创建新订阅的选项。此选项将引出另一个受欢迎的 SSRS 功能,即能够创建报表订阅。SSRS 订阅类似于报纸订阅。报纸“订阅者”希望根据他们选定的时间表收到报纸。SCCM/SSRS 订阅同样如此。 选择“新建订阅”选项会启动一个向导来配置此功能。图 4 中显示了初始向导屏幕。使用订阅可以自动执行报表以及自动传递最终报表。通过订阅可以将报表传递至文件共享,并可以各种格式(包括 XML、Excel、PDF、TIFF 和网页格式)呈现。
▲
图 4 System Center Configuration Manager 创建订阅向导
至此,我们主要介绍了如何通过 SCCM 控制台本身与 SSRS 交互。使用 SCCM 控制台对于许多与 SSRS 的交互(如执行报表和创建订阅)很有用。但在某些情况下,直接访问报表引擎更有帮助,尤其是对于测试或故障排除更是如此。SSRS 界面本身已在多个论坛进行了详细介绍,因此不在本文介绍范围之内。如果要直接访问 SSRS 界面,请登录至承载 SSRS 的服务器,打开 Web 浏览器,然后导航至 。您也可以远程访问此界面,方法是用服务器名称(NetBIOS 或 FQDN )替换列出的 URL 中的 localhost。
编写用于 SCCM 的 SSRS 报表
至此,我们介绍了如何使用标准 SCCM 报表与 SSRS 交互。使用 SSRS 可以编写自定义报表,此操作也并不复杂。有几种方法可以编写自定义报表。首先是根据标准 SQL 查询创建报表,这与标准 SCCM 报表中的方法非常相似。此外,还可以使用模型生成报表。可以通过 SCCM 控制台访问用于创建标准 SQL 或基于模型的报表的选项。可以从图 2 中所示的右键单击菜单中选择“Create Report”(创建报表)访问这些模型。选择“Create Report”(创建报表)将显示图 5 中显示的向导。
▲
图 5 System Center Configuration Manager 创建报表向导
该向导用于创建标准 SQL 报表甚至基于模型的报表,但与可以使用 Visual Studio 进行的编写相比,选项比较有限。有关使用基于模型的报表的详细信息,请参见“使用报表生成器建 CM2007 报表”白皮书。此外,还提供了其他有助于创建模型的资源。另一种可选方法是直接在 Visual Studio 中编写自定义报表,Visual Studio 提供了一个丰富而灵活的环境来生成报表。除了以上方法以外,还有第四种可选方法,本文将对其重点介绍:使用 Report Builder 2.0。针对 SQL Server 2008 设计的 Report Builder 2.0 是一个用于设计报表的可靠环境,此环境甚至还可以用于设计可用于 SCCM 的报表模型。Report Builder 2.0 可从 microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&displaylang=en 下载。如果编写用于 SQL Server 2005 的报表,则最可靠的可选方法是使用 Visual Studio。如果编写用于 SQL Server 2008 的报表,可以使用 Report Builder 2.0 或 Visual Studio。
无论使用哪种编写方法,报表作者都需要充分了解 SCCM 数据库才能取得成功。SCCM 数据库讨论已经超出了本文的讨论范围。
本文余下部分将逐步演示如何使用 Report Builder 2.0 创建基本报表、如何将最终报表部署至 SSRS 以及如何通过 SCCM 执行此报表。
要开始操作,请启动 Report Builder 2.0,随即将显示类似图 6 所示的简介屏幕。
▲
图 6 Report Builder 2.0 简介屏幕
此环境随即准备开始设计报表,并且由于它基于向导,因此简化了设计过程。在报表的设计区域中,单击标题区域,然后将默认文本替换为此报表的标题。此示例报表的标题将为“Basic ConfigMgr Report”。与任何测试一样,可以从右键单击菜单中访问全部格式设置选项。输入标题后即可开始设计报表。此设计器中有两个选项:创建基于表或矩阵的报表,或创建基于图表的报表。选择创建基于图表的报表。随即将打开“新图表”向导,如图 7 所示。
▲
图 7 Report Builder 2.0 新图表向导
第一个要求是创建数据源。数据源将报表配置为链接至相应的 SQL 服务器,以及此 SQL 服务器上承载报表所用数据的相应数据库。单击“新建”[1105user1] ,随即将显示数据源屏幕。在此屏幕上,输入数据源标题,选择连接至 Microsoft SQL Server,然后手动或使用生成连接字符串的选项输入连接字符串。随即将显示类似于图 8 所示的已完成“数据源属性”窗口。
▲
图 8 Report Builder 2.0 中已完成的“数据源属性”窗口
“凭据”窗口用于配置报表所期望的凭据提供方式。选项包括使用当前 Windows 用户的凭据;使用特定用户名、密码和凭据提示;或不使用凭据。仅当将报表保存至报表服务器时,才会存储这些选项。
完成配置后,选择“确定”返回此向导。返回向导后,单击“下一步”,随即将显示一个窗口,从中输入要用于创建报表的查询。此处提供了几个有关如何使用查询设计器的选项,即在左侧数据库视图中选择所需的特定表、选择导入现有查询或选择以文本形式进行编辑并手动输入查询。使用设计器以图形方式生成查询很有用,但对于此示例报表,将使用以下查询:
select
(select count(*) from v_r_system vrs
inner join v_agentdiscoveries vad
on vrs.resourceid=vad.resourceid
where vad.agentname = 'Heartbeat Discovery' and
(datediff(day, vad.agenttime, getdate())< 7))
as 'Number of agents with Heartbeat less than 7 days',
(select count(*) from v_r_system vrs
inner join v_agentdiscoveries vad
on vrs.resourceid=vad.resourceid
where vad.agentname = 'Heartbeat Discovery' and
(datediff(day, vad.agenttime, getdate()) >7))
as 'Number of agents with Heartbeat greater than 7 days'
注意,当使用文本编辑器时,您可以选择查询基于文本还是基于存储过程。对于此示例,查询将基于文本。使用存储过程的好处很多,包括查询优化。使用存储过程已经超出了本文的讨论范围。无论选择哪种方法来生成查询,都必须充分了解 SCCM 数据库。此外,在针对 SCCM 数据库生成查询时,请确保使用视图而非表。完成编辑后,屏幕将类似于图 9 所示。
▲
图 9 Report Builder 2.0 中基于文本的查询
选择“下一步”继续在向导中执行操作,然后选择用于此报表的图表类型。选项包括柱形图、线形图、饼形图、条形图和面积图。对于此示例,将使用条形图。选择此图,然后单击“下一步”。
下一个屏幕用于在要显示的图表上排列数据字段。有两个可用字段可以置于类别、值或序列部分中。对于此简单示例,请将这两个数据字段置于值部分中,然后单击“下一步”。
您将看到此向导允许选择报表样式。选择“海洋”并结束此向导。完成后,结果将类似于图 10 所示。
▲
图 10 Report Builder 2.0 中已完成的报表
从这里,可以修改图表元素本身。只需单击图表标题或图表图例即可进行任何所需的更改,包括调整图表大小、更改报表标题、更改图表样式等。进行所需的更改后,选择设计器左上角中的“运行”测试并执行此报表。进行几处修改后,此示例报表将如图 11 所示。
▲
图 11 在 Report Builder 2.0 中生成的示例报表的最终呈现
完成报表后,即可将其部署至 SSRS。Report Builder 2.0 中提供了两个选项:将报表保存至 RDL 文件,或将其直接部署至 SSRS。对于此示例,将使用 Report Builder 2.0 直接进行部署。直接从 Report Builder 2.0 部署至 SSRS 需要在报表生成器中配置 SSRS 网页的位置。报表生成器窗口左下角中的快速浏览将指示 SSRS 实例对 Report Builder 是否是已知的。如果未知,请单击报表生成器窗口左上角中的“报表生成器”按钮,然后选择“选项”。图 12 中显示的屏幕将允许指定 SSRS 实例。
▲
图 12“报表生成器选项”窗口将允许您指定 SQL Server Reporting Services 实例。
关联后,保存示例报表只需选择“报表生成器”按钮,然后选择保存即可。如果 SSRS 关联正确,保存窗口将显示位于 SSRS 上相应位置的文件夹。选择要将此报表保存至的文件夹,然后选择“确定”。保存报表以便在 SCCM 控制台中显示时,请确保将其置于 SCCM 根文件夹或其中的子文件夹内。此示例报表将保存在 SampleSCCMReportProject 文件夹中,如图 13 所示。
▲
图 13 将报表保存至 System Center Configuration Manager 根文件夹中的子文件夹.
此报表随即部署至 SSRS。要验证部署,请打开 SSRS 网页 ,然后验证是否在 ConfigMgr_
▲
图 14 SSRS 控制台.
总结
本文详细介绍了 SCCM 与 SSRS 之间的集成,以及将简单报表部署至 SSRS 所需的步骤。此示例报表不需要用户输入,并依赖于一个简单的 SQL 查询。报表可能并且通常更为复杂,包括使用变量提示用户输入信息以及适用存储过程等。此外,还有许多设计选项可帮助更加完善地显示数据。
尽管实际编写的大多数报表都要比这个简单示例所演示的报表复杂得多,但了解文本中的示例是成功进行 SCCM/SSRS 集成的基础。