CÓMO: Utilizar SQL Server para analizar registros Web

Seleccione idioma Seleccione idioma
Id. de artículo: 296085 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E296085
Expandir todo | Contraer todo

Resumen

Internet Information Server o los Servicios de Internet Information Server proporcionan varios formatos para recopilar datos en forma de registros Web. En los sitios con mucha actividad, estos archivos sin formato basados en texto, en ocasiones se convierten en una carga para revisar y se pasan por alto. Una manera mejor de revisar los datos sería hacer de esos registros un recurso más eficaz para administradores de red y del Web.

En este artículo se describe un método para importar registros de IIS en el formato de archivo de registro extendido World Wide Web Consortium (W3C) a Microsoft SQL Server, a fin de facilitar la revisión de los archivos de registro de IIS. También pueden modificarse las técnicas proporcionadas para otros formatos de archivo de registro.

Más información

Los registros de Web son archivos de texto delimitado tal y como lo especifica RFC 2616, "Protocolo de transferencia de hipertexto -- HTTP/1.1" ( http://www.rfc-editor.org/rfc/rfc2616.txt ).

En el formato de archivo de registro extendido W3C los campos se explican en cierta manera a sí mismos: fecha y hora son lo que parecen; [c-ip] es la dirección IP del cliente; [cs-method] es el método HTTP para la solicitud que se cumplió; [cs-uri-stem] es el documento solicitado; [cs-uri-query] es la cadena de consulta que se envió como parte de la solicitud que se estaba registrando; [sc-status] es el código de estado devuelto por el servidor; [sc-bytes] es el número de bytes que se le han devuelto al usuario; [time-taken] es la hora en milisegundos que tardó el servidor en completar el procesamiento de la solicitud; [cs(Cookie)] es la cookie o los datos persistentes de la solicitud; y [cs(Referer)] es la dirección URL del sitio visitado anteriormente por el usuario. Para el formato de registro extendido W3C, hay numerosos campos adicionales entre los que se puede elegir, que se encuentran descritos en la ayuda de IIS y en el sitio Web de Microsoft siguiente:
http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiintlg.htm
Los registros reciben el formato de la manera siguiente:

Contraer esta tablaAmpliar esta tabla
date time c-ip cs-method cs-uri-stem cs-uri-query sc-status sc-bytes time-taken cs(User-Agent) cs(Cookie) cs(Referrer)


El encabezado de los archivos de registro se corresponde con los campos elegidos en Propiedades en el sitio Web, en la ficha Sitio Web y, en el caso del registro extendido W3C, en la ficha Propiedades extendidas. Si sus registros Web ya están en una tabla de Microsoft SQL Server, es probable que sea debido al registro ODBC. Sin embargo, cuando se utiliza el registro ODBC no se pueden configurar los campos. La Ayuda de IIS contiene instrucciones acerca de cómo configurar el registro ODBC, que incluye el uso de Logtemp.sql para crear la tabla con la estructura esperada.

Podría usar el Administrador corporativo para crear la tabla, pero si desea mayor rapidez y ayudar en la automatización del proceso, utilice la secuencia de comandos siguiente del Analizador de consultas para crearla:
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 
	)

Tenga en cuenta que algunos de estos campos son bastante grandes y que pueden no ser necesarios para revisar sus archivos de registro particulares.

Una vez creada la tabla, se pueden importar los datos con el Asistente para importar, asignando desde el archivo *.log hasta la base de datos y la tabla.

La utilización del Asistente puede ser tediosa, de modo que para acelerar la importación de nuevos registros Web puede utilizar lo siguiente:
BULK INSERT [dbo].[tablename] FROM 'c:\weblog.log'
WITH (
    FIELDTERMINATOR = ' ',
    ROWTERMINATOR = '\n'
)

Tenga en cuenta que la inserción masiva fallará cuando se encuentre con líneas que comiencen por . En los registros Web, esto incluye las primeras cuatro líneas, así como cualquier otra instancia cuando se detiene e inicia el servidor, ya que las líneas de encabezado se escriben cuando se reinicia el servicio. El artículo siguiente de Microsoft Knowledge Base proporciona una utilidad y código fuente para quitar estas líneas y preparar el registro para la inserción masiva en SQL Server:
296093 FILE: PrepWebLog Utility Prepares IIS Logs for SQL Bulk Insert
Cuando haya finalizado la importación, podrá utilizar el Analizador de consultas para ejecutar consultas y organizar los datos. Por ejemplo:
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' 
Esta consulta mostrará los nombres de todas las páginas que se procesaron en más de 20 segundos y entre las 4:30 y las 5:30 p.m., junto con el tiempo de procesamiento (en milisegundos) de cada una.

Tenga en cuenta que de manera predeterminada los registros Web se graban en la hora media de Greenwich, de modo que salvo que se hayan efectuado cambios para que se graben en la hora local, deberá ajustar la hora local cuando revise los registros.

Otra consulta de ejemplo:
Select distinct [cs-uri-stem], [time-taken] 
from tablename 
where [time-taken] > (	select avg([time-taken]) 
			from tablename)
			order by [time-taken] desc
Esta consulta encuentra la media de tiempo invertido [time-taken] de cada entrada en el archivo de registro y, a continuación, selecciona [cs-uri-stem] y [time-taken] y los organiza en orden descendente por tiempo invertido [time-taken]. Si se agrega una cláusula "time between" se podrían aislar más los resultados de esta consulta.

Referencias

NOTA: la inserción masiva no funcionará con SQL Server 7.0, pero sí con SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
272292 BUG: Error 7399 When You Bulk Insert into Table with Column Default on a NUMERIC or DECIMAL Column
Para obtener más información acerca de LocalTimeRollover para registros de IIS y la configuración de LogFileLocaltimeRollover:
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/iisref/apro186q.htm

Propiedades

Id. de artículo: 296085 - Última revisión: martes, 29 de abril de 2003 - Versión: 1.0
La información de este artículo se refiere a:
  • Servicios de Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Servicios de Microsoft Internet Information Server 5.0
Palabras clave: 
kbhowto kbgrpdssie KB296085

Enviar comentarios

 

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