自訂SCCM報表

來源:互聯網
上載者:User

[http://blog.sina.com.cn/s/blog_55a426e40100nwi2.html] 

在商業網路環境裡部署了SCCM2007後,我們除了可以利用它來分發軟體、補丁、網路控制之外,還可以深入挖掘SCCM報表功能。

當SCCM2007打過SP2包後,已經為我們準備了373個內容豐富的內建報表。然而,有時你會感覺它並不是你想要的報表,當然Microsoft早已為你提供了自訂功能。    如果因為公司電腦台帳資訊沒有維護好,你要尋找某幾個使用者使用的電腦HostName、IP Address...這時候,對於IT是相當尷尬了。當然我們可以有很多方法尋找出來,然而我們今天就利用SCCM自訂報表功能來Show出一個完整用戶端台帳資訊報表。
    1. 建立一個報表。
      如名稱:用戶端資訊台帳
      類別:Asset Intelligence
      SQL語句:
      SELECT SYS.Netbios_Name0,IPAddr.IP_Addresses0, SYS.User_Domain0, SYS.User_Name0,MEM.TotalPhysicalMemory0, ASSG.SMS_Installed_Sites0, SYS.Client_Version0
      FROM v_R_System  as SYS JOIN v_RA_System_SMSInstalledSites as ASSG  on SYS.ResourceID=ASSG.ResourceID 
      LEFT JOIN  v_RA_System_IPAddresses IPAddr on SYS.ResourceID = IPAddr.ResourceID
      LEFT JOIN  v_GS_X86_PC_MEMORY MEM on SYS.ResourceID = MEM.ResourceID
      WHERE ASSG.SMS_Installed_Sites0 LIKE @variable Order by SYS.Netbios_Name0
      注意: @variable  為變數
    2. 需要點擊“提示(P)”建立提示屬性,我們可以利用該變數選擇需要查看的“網站”範圍
      名稱:variable
      提示文本:站台碼
      提供SQL語句:
      begin
      if (@__filterwildcard = '')
      select SiteCode, SiteName from v_Site order by SiteCode
      else
      select SiteCode, SiteName from v_Site
      WHERE SiteCode like @__filterwildcard
      order by SiteCode
      end
    3. 實現點擊查詢出每條電腦資訊連結到詳細報表。
      “連結”頁簽裡,選擇連結類型為:連結到其他報表
      報表(R):硬體-常規-特定電腦的電腦資訊

      至此,我們已經將“用戶端資訊台帳”報表建立好,通過IE訪問SCCM報表應用網站,如:http://SCCM-Server/smsreporting_001/
      這裡並未對SQL查詢語句多做解釋,其實並不複雜。大家只需參考SCCM內建報表即可建立出更為強大的報表。

注意:

1.自訂報表關鍵在於對視圖中包含的資訊的理解,並使用SQL查詢語句進行組合來達到自己的目的。

2.需要先確認需要查詢的資訊是否已經被Agent進行收集,如果未收集,可通過修改Configuration.mof 檔和SMS_def.mof 檔來開啟。如SMS_def.mof 檔:(True說明資訊收集已開啟,False說明未開啟)

      
  • 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個視圖:

    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 =1and(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://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 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

                     

    1. 接下來要建立一個你的報表資料的Data Set. 下面就是SQL語句,但是要注意其中的@Program參數,report builder會預設為其產生一個報表的參數。
    SELECTDISTINCTv_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 ClientVersionFROM  v_R_System  LEFTOUTERJOIN v_GS_ADD_REMOVE_PROGRAMS    ON v_R_System.ResourceID = v_GS_ADD_REMOVE_PROGRAMS.ResourceID  LEFTOUTERJOIN v_GS_ADD_REMOVE_PROGRAMS_64    ON v_R_System.ResourceID = v_GS_ADD_REMOVE_PROGRAMS_64.ResourceIDWHERE  v_R_System.Client0 =1AND(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來運行這個報表。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.