Part 1:SCCM 的报表服务
Part 1.1 – 报表服务概述
SCCM 2007 R2提供了两个报表的角色,报表点和reporting service点。其中报表点是SCCM内置的报表服务,SCCM 2007提供了388个内置的报表。你可以通过SQL语句自己建立新的报表。要注意的是如果要在报表中使用图形,必须安装office web组件。但是64位操作系统不支持Office Web Components。
在SCCM 2007 R2中SCCM提供一个新的角色:Reporting Service点。Reporting Service点能够让SCCM的报表服务具有以下优势:
- 使用SQL Server的标准报表服务(SQL Server Reporting Service)来查询SCCM数据库。
- 提供了Model-Based报表创建方式和集成了Microsoft Report Builder报表创建工具,让不熟悉SCCM数据库表和视图的用户更方便的定制报表。
- 通过使用SQL Server的reporting service提供报表的订阅服务。
Part 1.2 – 定制报表
在SCCM中根据自己的需求创建新的报表,需要对SCCM数据库的视图有一个详细的了解。微软提供了一个程序:Creating Custom Reports By Using Configuration Manager 2007 SQL Views,这个程序提供了详细的SCCM视图的文档。
Part1.2.1 – 报表点(Reporting Point),报表的创建
我们在这里用一个例子来开始:比如IT管理员可能要求查询所有安装了特定软件的客户端。那么你需要用到3个视图:
- dbo.v_R_System
- dbo.v_GS_ADD_REMOVE_PROGRAMS
- dbo.v_GS_ADD_REMOVE_PROGRAMS_64
然后新建报表,在报表的SQL语句中输入:
select v_R_System.ResourceID, v_R_System.Netbios_Name0 as Name
from v_R_System
where v_R_System.Client0 = 1 and (v_R_System.ResourceID in
(select v_GS_ADD_REMOVE_PROGRAMS.ResourceID from v_GS_ADD_REMOVE_PROGRAMS
where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 like @ProgramName)
or v_R_System.ResourceID in(
select v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID from v_GS_ADD_REMOVE_PROGRAMS_64
where v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0 like @ProgramName
)
)
这里用到了报表里的Filter,也就是上面语句里的@ProgramName。这个Filter在SCCM里被成为Prompt。如果要定义上面的@ProgramName Prompt,新建报表界面上点击如下图:
在标注5的地方输入Prompt的SQL语句:
begin
if (@__filterwildcard = '')
(Select distinct DisplayName0 As Name From v_GS_ADD_REMOVE_PROGRAMS) Union (Select distinct DisplayName0 As Name From v_GS_ADD_REMOVE_PROGRAMS_64)
else
(Select distinct DisplayName0 As Name From v_GS_ADD_REMOVE_PROGRAMS where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 like @__filterwildcard) Union (Select distinct DisplayName0 As Name From v_GS_ADD_REMOVE_PROGRAMS_64 where v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0 like @__filterwildcard)
End
下面是这个报表运行的结果:
Part1.2.2 – Reporting Service点,报表的创建
这里我们使用和上面一样的例子,IT管理员可能要求查询所有安装了特定软件的客户端。
首先下载安装SQL Reporting Service Report Builder 3.0。下载链接如下:
需要注意在安装的时候可以指定数据源。数据源的格式是:
http://[SQL server machine name]/ReportServer
如果是named instance:
http://[SQL Server machine name]/ReportServer_[Instance Name]
使用SQL Reporting Service Report Builder 3.0
- 打开Report Builder -> 点击左上角的图标 -> 选择Options。在Report Builder Options窗口,settings页面输入你的report server。如果你的数据库是default instance:Http://[SQL SERVER Reporting Service Machine name]/ReportServer。如果是named instance:Http:// Http://[SQL SERVER Reporting Service Machine name]/ReportServer_InstanceName
- 然后,在左下角点击连接。这时Report Builder就会连到SQL Server Reporting Service,并且显示连接的状态。
- 点击新建 -> Data Source。这里将会建立一个连接到你数据库的数据库连接。
下面要建立你的报表需要的Data Set。
- 我们需要建一个包含所有在Windows Programs And Features里的软件的名称。你可以使用SQL语句或Query Designer。
SQL语句如下:
(SELECT DISTINCT v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 AS Programs FROM v_GS_ADD_REMOVE_PROGRAMS) UNION (SELECT DISTINCT v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0 AS Programs FROM v_GS_ADD_REMOVE_PROGRAMS_64) ORDER BY Programs
- 接下来要建立一个你的报表数据的Data Set. 下面就是SQL语句,但是要注意其中的@Program参数,report builder会默认为其生成一个报表的参数。
SELECT DISTINCT
v_R_System.ResourceID
,v_R_System.Netbios_Name0 AS Name
,v_R_System.Operating_System_Name_and0 AS OperatingSystem
,v_R_System.Client_Version0 AS ClientVersion
FROM
v_R_System
LEFT OUTER JOIN v_GS_ADD_REMOVE_PROGRAMS
ON v_R_System.ResourceID = v_GS_ADD_REMOVE_PROGRAMS.ResourceID
LEFT OUTER JOIN v_GS_ADD_REMOVE_PROGRAMS_64
ON v_R_System.ResourceID = v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID
WHERE
v_R_System.Client0 = 1
AND (v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0 LIKE @Program
OR v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 LIKE @Program)
- 打开,刚才自动生成的Program参数,在Available Values页面将这个报表参数指向第一个data set。
最后在Report Builder页面上插入我们需要的报表。选择插入->表,会弹出新建表的窗口。
- 选择我们报表的数据集,DataSet2。
- 选择我们需要在报表上显示的列。
- 完成其余的关于外观,布局的选项。
这是我们最后在report builder上看到的结果。
这里你可以通过report builder来运行这个报表,这样可你让你在把这个报表发布到report server前进行测试。
如果报表的结果满足要求,那接下来就要把这个报表部署到SQL Server Reporting Service上。点击左上角的图标,选择保存,保存到你想要的文件里。这时这个报表已经被保存到report server上了。
最后,可以通过,SQL server reporting service web report manager来运行这个报表。
更多精彩资讯,尽在多产品结合与应用场景: http://social.technet.microsoft.com/Forums/zh-CN/category/productsinformation。