| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-05-19 04:14:37  評論

簡介

可以利用 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 任務。

  簡介   可以利用 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 任務。      
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有