創建Web部件顯示PortalServer的搜索數據

簡介

可以利用 Microsoft Office SharePoint Portal Server 2003 中的強大搜索數據集合,創建端對端的解決方案來執行搜索項數據的收集和查看。SharePoint Portal Server 會自動記錄搜索項數據。在本文中,我們會展示如何將這種數據從每天的日志文件合並到 SQL Server 數據庫中,並且使其可用于快速檢索和分析。我們將詳細說明要實現該任務需要執行的下列高級步驟:

1.創建 SQL 數據庫、相關的存儲過程和 DTS 軟件包,以便將日志文件數據加載到數據庫中。

2.創建 Web 部件以查看並篩選來自 SQL 數據庫的搜索數據。

請注意,在 IIS 日志文件中記錄並傳輸到數據庫的搜索結果不包括查詢的作用域信息(如果適用),也不包括僅屬性查詢的結果,例如查詢由特定人員創建的文檔。

注 本文假設您對 SharePoint Portal Server、.NET Framework 技術(例如 ASP.NET)以及 Microsoft Visual C# 編程語言具有非常深入的理解。您應該將本文與 Microsoft SharePoint Products and Technologies 2003 Software Development Kit (SDK) 中的其他參考資料一起使用。

存儲數據:創建數據庫、相關存儲過程和 DTS 軟件包

對于中央存儲和簡單查詢,我們建議將搜索項數據信息從 IIS 日志文件加載到 SQL Server 數據庫中。要采取三個步驟,如下所示:

1.創建數據庫和表。

2.創建存儲過程。

3.創建數據轉換服務 (DTS) 軟件包。

步驟 1. 創建數據庫和表

使用“企業管理器”或相似的工具,在 SQL Server 計算機上創建數據庫,以存儲 IIS 日志文件信息、存儲過程和 DTS 軟件包。

在新的 SQL 數據庫中創建以下兩個表:

• tblLogItems

• tblSearchTerms

每個表都應該具有以下結構:

[DateData] [varchar] (255)注 對于 tblSearchTerms 表中的 [DateData],該字段的類型爲 [datetime] (8)。

[TimeData] [varchar] (255)

[IP] [varchar] (255)

[Type] [varchar] (255)

[Page] [varchar] (255)

[SearchTermData] [varchar] (255)

[Port] [varchar] (255)

[UserData] [varchar] (255)

[IP2] [varchar] (255)

[Browser] [varchar] (255)

[HTTPCode] [varchar] (255)

[Col012] [varchar] (255)

[Col013] [varchar] (255)

[Col014] [varchar] (255)

[Col015] [varchar] (255)

注 DateData、TimeData、SearchTermData 和 UserData 字段用于 Web 部件查詢中。IIS 日志文件中收集的其他信息存儲在表中,可以通過修改 Web 部件查詢來使用。

步驟 2. 創建存儲過程

在本步驟中,創建以下八個存儲過程:

• sp_ReturnFileName

• sp_DeleteIDA

• sp_AppendTerms

• sp_UpdateSearchTermData

• sp_GetDateData

• sp_GetUserData

• sp_GetDatabyDate

• sp_GetDatabyUser

存儲過程 #1: sp_ReturnFileName

下面的存儲過程,由 DTS 軟件包使用,它返回前一天的 IIS 日志文件名。可以爲 @stPrefix 變量指定不同的本地路徑或通用命名約定 (UNC) 值。IIS 日志文件存儲在路徑 WINDOWSsystem32LogFilesW3SVC1 中,但可以將這些文件複制到另一個位置以便將來導入到數據庫中。

注 您必須更改 @stPrefix 的變量聲明,以便准確匹配您爲本地路徑或 UNC 路徑指定的字符串的長度。

CREATE PROCEDURE sp_ReturnFileName

AS

DECLARE @dtRetrieveFile datetime,

@stPrefix char(25),

@stSuffix char(4),

@stTemp char(2),

@stYear char(2),

@stMonth char(2),

@stDay char(2)

SET @dtRetrieveFile = DateAdd(d, -1, GetDate())

-- may include UNC or local path in @stPrefix

-- change declaration to the number

-- of characters in @stPrefix

SET @stPrefix = '\server_nameshareex'

SET @stSuffix = '.log'

-- Get two-digit year

SET @stYear = Cast(Right(DatePart(yy,@dtRetrieveFile), 2) As char(2))

-- Get two-digit month

SET @stTemp = Cast(Datepart(mm,@dtRetrieveFile) As char(2))

SELECT @stMonth =

CASE Len(@stTemp)

WHEN 1 THEN '0' + @stTemp

ELSE @stTemp

END

-- Get two-digit day

SET @stTemp = Cast(DatePart(dd,@dtRetrieveFile) As char(2))

SELECT @stDay =

CASE Len(@stTemp)

WHEN 1 THEN '0' + @stTemp

ELSE @stTemp

END

SELECT @stPrefix + @stYear + @stMonth + @stDay + @stSuffix

GO

存儲過程 #2: sp_DeleteIDA

下面的存儲過程,用于 DTS 軟件包中,它從 tblLogItems 表中刪除不相關的項。

CREATE PROCEDURE sp_DeleteIDA

AS

DELETE tblLogItems WHERE SearchTermData = '/default.ida' Or SearchTermData Like '%root.exe'

GO

存儲過程 #3: sp_AppendTerms

下面的存儲過程用于 DTS 軟件包中,它將包含搜索項目的記錄從 tblLogItems 表添加到 tblSearchTerms 表中。DateData 字段從 IIS 日志文件格式 (yyyy-mm-dd) 轉換爲 USA 格式 (mm/dd/yyyy),以適應顯示目的以及在 Web 部件代碼中更簡便的進行查詢。

CREATE PROCEDURE dbo.sp_AppendTerms

AS INSERT INTO dbo.tblSearchTerms

(DateData, TimeData, IP, Page, SearchTermData,

Port, UserData, IP2, Browser, HTTPCode, Col012,

Col013, Type)

SELECT

CAST(DateData AS DateTime), TimeData, IP, Page, SearchTermData,

Port, UserData, IP2, Browser, HTTPCode, Col012, Col013, Type

FROM

dbo.tblLogItems

WHERE

(Type LIKE 'POST') AND (NOT (UserData LIKE '-')) AND (NOT (SearchTermData LIKE '-'))

GO

存儲過程 #4: sp_UpdateSearchTermData

下面的存儲過程用于 DTS 軟件包中,它清除最近添加到 tblSearchTerms 表中的搜索項。

CREATE PROCEDURE dbo.sp_UpdateSearchTermData

AS UPDATE

dbo.tblSearchTerms

SET

SearchTermData = REPLACE(SUBSTRING(SearchTermData, 64,

PATINDEX('%+Search+Server+Name%', SearchTermData) - 64), '+', ' ')

WHERE

(PATINDEX('%+Search+Server+Name%', SearchTermData) 0)

GO

存儲過程 #5: sp_GetDateData

下面的存儲過程由 Web 部件使用,它從 tblSearchTerms 表中檢索日期的列表。

CREATE PROCEDURE dbo.sp_GetDateData

AS SELECT DISTINCT DateData

FROM

dbo.tblSearchTerms

GROUP BY DateData

GO

存儲過程 #6: sp_GetUserData

下面的存儲過程由 Web 部件使用,它從 tblSearchTerms 表中檢索不同用戶的列表。

CREATE PROCEDURE dbo.sp_GetUserData

AS SELECT DISTINCT UserData

FROM

dbo.tblSearchTerms

GROUP BY UserData

GO

存儲過程 #7: sp_GetDatabyDate

下面的存儲過程由 Web 部件使用,它用于從 tblSearchTerms 表中檢索特定日期或日期範圍的搜索項。

CREATE PROCEDURE dbo.sp_GetDatabyDate(@StartDate DATETIME,

@EndDate DATETIME)

AS SELECT

SearchTermData, DateData, COUNT(SearchTermData) AS strCount

FROM

dbo.tblSearchTerms

WHERE

(DateData = @StartDate) AND (DateData <= @EndDate)

GROUP BY SearchTermData, DateData

GO

存儲過程 #8: sp_GetDatabyUser

下面的存儲過程由 Web 部件使用,它用于從 tblSearchTerms 表中檢索特定用戶的搜索項。

CREATE PROCEDURE dbo.sp_GetDatabyUser

(@UserName VARCHAR(255))

AS SELECT

SearchTermData, DateData, COUNT(SearchTermData) AS strCount

FROM

dbo.tblSearchTerms

WHERE

(UserData = @UserName)

GROUP BY SearchTermData, DateData

GO

步驟 3. 創建 DTS 軟件包

數據轉換服務 (DTS) 軟件包是使用 SQL Server Enterprise Manager 中的 DTS 設計器創建的。要創建一個軟件包,請右鍵單擊 SQL Server 實例下的 Data Transformation Services 文件夾,然後選擇 New Package。

要創建 DTS 軟件包,請執行以下七個步驟:

• 創建連接。

• 創建動態屬性任務。

• 創建執行 SQL 任務。

Data Studio的Web數據服務創建數據開發項目
Data Studio的Web數據服務創建數據開發項目
  創建到 SAMPLE 數據庫的連接之後,還需要創建一個數據開發項目。數據開發項目用于數據庫應用程序開發。這種項目與 Database Explorer 中的單個連接相關。可以用數據開發項目開發以下內容:  開發、測試和部署 ...查看完整版>>Data Studio的Web數據服務創建數據開發項目
 
Data Studio的Web數據服務創建數據庫連接
Data Studio的Web數據服務創建數據庫連接
  在創建 Web 服務之前,首先需要創建一個到數據庫的連接。  1、從 IBM Data Studio Database Explorer 展開 Connections 節點。如果已經存在到 SAMPLE 數據庫的連接,那麽可以跳到 創建數據開發項目 小節。  ...查看完整版>>Data Studio的Web數據服務創建數據庫連接
 
創建數據庫Web Services
XML Web Services一個最顯然的用處就是通用數據存取。通過它,你可以把公司的數據庫被Internet上的許多客戶端來訪問,也可以動態地把它導入到第三方的Web站點上,甚至可以允許你的商業夥伴的Web Services去查詢。下面...查看完整版>>創建數據庫Web Services
 
Flash Web結構之數據顯示層
  前面講Flash Web背景層的時候已經提到了數據顯示層。由于筆者基本不使用組件,所以對筆者來說,數據顯示層主要是指TextField,或者用MC簡單包裝的TextField。它們是網站信息的主體部分,一般都是動態的調用外部...查看完整版>>Flash Web結構之數據顯示層
 
::遞歸實現——創建二叉樹 ----> 裝入數據--->遍曆---> 顯示 --->銷毀::遞歸實現)
/* twoTree.cpp在 c++環境編譯 ! 創建二叉樹 ----> 裝入數據,---->遍曆---> 顯示 --->銷毀*都換用遞歸實現了 非遞歸實現還不怎麽熟悉所以就*/#include <iostream.h>#ifndef DEBUG#define...查看完整版>>::遞歸實現——創建二叉樹 ----> 裝入數據--->遍曆---> 顯示 --->銷毀::遞歸實現)
 
VB連接數據庫時出現“ActiveX部件不能創建對象”
我自己寫了一個程序,在我自己的機子上運行時沒有問題,在別人的機子上運行時,就出現“ActiveX部件不能創建對象”,錯誤指向set db=opendatabase(“數據庫地址“),其中dim db as batabase....查看完整版>>VB連接數據庫時出現“ActiveX部件不能創建對象”
 
VB連接數據庫時出現“ActiveX部件不能創建對象”
我自己寫了一個程序,在我自己的機子上運行時沒有問題,在別人的機子上運行時,就出現“ActiveX部件不能創建對象”,錯誤指向set db=opendatabase(“數據庫地址“),其中dim db as batabase....查看完整版>>VB連接數據庫時出現“ActiveX部件不能創建對象”
 
演練:在 Web 窗體頁中創建只讀數據訪問
在 Web 應用程序中,某個頁只顯示數據(即該頁上的數據是只讀的)是非常常見的。典型的示例包括目錄列表、搜索結果等。用戶可以通過單擊按鈕將某項添加到購物車或單擊頁上的鏈接來操作數據,但這些操作不直接影響頁上...查看完整版>>演練:在 Web 窗體頁中創建只讀數據訪問
 
MSDN中“演練:使用 Web 窗體頁創建分頁的數據訪問” 一文中的代碼的一點改進
如果你安裝了MSDN,正在學習使用.NET制作網站,也許會碰到這樣一個示例文檔:Visual Basic 和 Visual C# 概念演練:使用 Web 窗體頁創建分頁的數據訪問ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/v...查看完整版>>MSDN中“演練:使用 Web 窗體頁創建分頁的數據訪問” 一文中的代碼的一點改進
 
 
回到王朝網路移動版首頁