如何使用 SQL Server 分析 Web 日志

文章翻译 文章翻译
文章编号: 296085 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

Internet 信息服务器/服务提供了许多收集 web 日志的窗体中的数据的格式。 繁忙的站点的这些基于文本的平面文件某个时间变得太多要查看的负担,并将被忽略。 一种更好的方法来查看数据将使这些日志更好的资源为管理员和 web 母版。

本文介绍了要导入 Microsoft SQL Server 以便于 IIS 日志文件的检查的万维网联合会 (W3C) 扩展日志文件格式中的 IIS 日志的方法。 提供该方法还可以用于其它日志文件格式进行更改。

更多信息

web 日志是带分隔符的文本文件中,按照指定的 RFC 2616"超文本传输协议--HTTP/1.1"(http://www.rfc-editor.org/rfc/rfc2616.txt)。

In W3C Extended Logging format the fields are somewhat self explanatory: data and time are just what they seem; [c-ip] is the IP address of the client; [cs-method] is the HTTP method for the request that was met; [cs-uri-stem] is the document that has been requested; [cs-uri-query] is the query string that was sent as part of the request being logged; [sc-status] is the status code returned by the server; [sc-bytes] is the number of bytes that have been returned to the user; [time-taken] is the time in milliseconds that it took for the server to complete the processing of the request; [cs(Cookie)] is the cookie, or persistent data in the request; and [cs(Referer)] is the URL of the previous site visited by the user. 对于 W3C 扩展日志记录格式有一个其他的字段数可以选择其中介绍了 IIS 帮助中和在下面的 Microsoft 网站:
http://msdn.microsoft.com/en-us/library/ms525152.aspx
日志的格式,如下所示:

收起该表格展开该表格
日期时间c-ipcs 方法日期-uri 的词干cs uri 查询sc 状态sc 字节时间执行cs(User-Agent)cs(Cookie)cs(Referrer)


扩展属性 选项卡的 网站 选项卡上和 W3C 扩展日志记录的情况下 Web 站点的 属性 中选择的字段对应的日志文件标头。 如果您的 web 日志已被 Microsoft SQL Server 中的表,则很可能由于的 ODBC 日志记录。 然而,在使用时是不可配置 ODBC 日志记录字段。 IIS 帮助有这包括使用 Logtemp.sql 预期结构中创建表 ODBC 日志记录设置的说明。

您可以使用企业管理器创建了的表,但使它更快,并在过程中的自动化中帮助您而是使用下面的脚本在查询分析器中创建表:
CREATE TABLE [dbo].[tablename] (
	[date] [datetime] NULL,
	[time] [datetime] NULL ,
	[c-ip] [varchar] (50) NULL ,
	[cs-method] [varchar] (50) NULL ,
	[cs-uri-stem] [varchar] (255) NULL ,
	[cs-uri-query] [varchar] (2048) NULL ,
	[sc-status] [int] NULL ,
	[sc-bytes] [int] NULL ,
	[time-taken] [int] NULL ,
	[cs(User-Agent)] [varchar] (255) NULL ,
	[cs(Cookie)] [varchar] (2048) NULL ,
	[cs(Referer)] [varchar] (2048) NULL 
	)
				

请注意这些字段的某些相当大,并且可能不是所需的查看特定日志文件。

在创建表后您可以通过使用导入向导是从 *.log 文件映射到数据库和表导入数据。

使用向导可能非常枯燥的因此以下可用于加快 web 日志导入:
BULK INSERT [dbo].[tablename] FROM 'c:\weblog.log'
WITH (
    FIELDTERMINATOR = ' ',
    ROWTERMINATOR = '\n'
)
				

请注意,当它遇到以"#"开头的行大容量插入将失败。web 日志这包括在前四个行,以及任何其他实例时服务器已停止并启动,因为标题行写入时重新启动该服务。 下面的 Microsoft 知识库文章提供了一个实用程序和源代码以删除这些行,并准备在大容量插入操作 SQL Server 日志:
296093FILE: PrepWebLog 实用程序准备 IIS 日志的 SQL 大容量插入
完成导入后您可以使用查询分析器以运行查询来组织数据。例如:
Select [cs-uri-stem], [time-taken] from tablename where [time-taken] >= 20000 and time between '1899-12-30 16:30:00.000' and '1899-12-30 17:30:00.000' 
				
此查询将显示的时间超过 20 秒来处理和的每个处理 4: 30 到下午 5: 30,一起处理时间 (以毫秒为单位) 之间的所有网页的名称。

请注意通过日志将记录在格林威治标准时间的默认 web,因此除非记录到日志中本地时间进行了更改,否则您必须调整本地时间时查看日志。

另一个示例查询:
Select distinct [cs-uri-stem], [time-taken] from tablename where [time-taken] > (select avg([time-taken]) from tablename)order by [time-taken] desc
				
此查询将查找 [时间-采取] 日志文件中的每个条目的平均值,然后选择该 [cs-uri 的词干] 和 $ 在 [时间-采取] 并组织这按降序顺序由 [时间采取]。 添加一个"之间的时间"子句可以进一步隔离该查询的结果。

参考

注:无法在 SQL Server 7.0 中使用大容量插入,但它工作正常 SQL Server 2000。有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
272292错误: 错误 7399 时您批量插入到表的列上 NUMERIC 或小数的默认列
有关 IIS 日志和 $ LogFileLocaltimeRollover 设置 LocalTimeRollover 的详细信息:
http://msdn.microsoft.com/en-us/library/microsoft.web.administration.sitelogfile.localtimerollover.aspx

属性

文章编号: 296085 - 最后修改: 2006年11月21日 - 修订: 3.3
这篇文章中的信息适用于:
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
关键字:?
kbmt kbhowto KB296085 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 296085
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com