简介 可以利用 Microsoft Office SharePoint Portal Server 2003 中的强大搜索数据集合,创建端对端的解决方案来执行搜索项数据的收集和查看。SharePoint Portal Server 会自动记录搜索项数据。在本文中,我们会展示如何将这种数据从每天的日志文件合并到 SQL Server 数据库中,并且使其可用于快速检索和分析。我们将详细说明要实现该任务需要执行的下列高级步骤:
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
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
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。