SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?

本文引自于:http://social.technet.microsoft.com/Forums/zh-CN/managementanalysis/thread/49217473-a741-464c-a7cb-614dfe7aed4f

Part 1SCCM 的报表服务

Part 1.1 – 报表服务概述

SCCM 2007 R2提供了两个报表的角色,报表点和reporting service点。其中报表点是SCCM内置的报表服务,SCCM 2007提供了388个内置的报表。你可以通过SQL语句自己建立新的报表。要注意的是如果要在报表中使用图形,必须安装office web组件。但是64位操作系统不支持Office Web Components

SCCM 2007 R2SCCM提供一个新的角色:Reporting Service点。Reporting Service点能够让SCCM的报表服务具有以下优势:

  • 使用SQL Server的标准报表服务(SQL Server Reporting Service)来查询SCCM数据库。
  • 提供了Model-Based报表创建方式和集成了Microsoft Report Builder报表创建工具,让不熟悉SCCM数据库表和视图的用户更方便的定制报表。
  • 通过使用SQL Serverreporting service提供报表的订阅服务。

Part 1.2 – 定制报表

SCCM中根据自己的需求创建新的报表,需要对SCCM数据库的视图有一个详细的了解。微软提供了一个程序:Creating Custom Reports By Using Configuration Manager 2007 SQL Views,这个程序提供了详细的SCCM视图的文档。

Part1.2.1 – 报表点(Reporting Point),报表的创建

我们在这里用一个例子来开始:比如IT管理员可能要求查询所有安装了特定软件的客户端。那么你需要用到3个视图:

  1. dbo.v_R_System
  2. dbo.v_GS_ADD_REMOVE_PROGRAMS
  3. 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。这个FilterSCCM里被成为Prompt。如果要定义上面的@ProgramName Prompt,新建报表界面上点击如下图:

SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?_第1张图片

在标注5的地方输入PromptSQL语句:

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

下面是这个报表运行的结果:

SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?_第2张图片

Part1.2.2 – Reporting Service点,报表的创建

这里我们使用和上面一样的例子,IT管理员可能要求查询所有安装了特定软件的客户端。

首先下载安装SQL Reporting Service Report Builder 3.0。下载链接如下:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&displaylang=en

需要注意在安装的时候可以指定数据源。数据源的格式是:

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 instanceHttp://[SQL SERVER Reporting Service Machine name]/ReportServer。如果是named instanceHttp:// Http://[SQL SERVER Reporting Service Machine name]/ReportServer_InstanceNameSCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?_第3张图片
  • 然后,在左下角点击连接。这时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

                

  1. 接下来要建立一个你的报表数据的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。

你可能感兴趣的:(components,microsoft,Microsoft,service,sql,server,SQL,SERVER,SQL,Server,SQL,server,报表)