2008-09-23 14 views
54

¿Hay alguna manera de decirle a SQL Server 2008 Express que registre cada consulta (incluidas todas y cada una de SELECT Query!) En un archivo?¿Está registrando TODAS las consultas en una base de datos de SQL Server 2008 Express?

Es una máquina de desarrollo, por lo que los efectos secundarios negativos de las Consultas de selección no son un problema.

Antes de que alguien sugiera usar el Analizador de SQL: Esto no está disponible en Express (¿alguien sabe si está disponible en la Edición Web?) Y estoy buscando una forma de registrar consultas incluso cuando estoy ausente.

Respuesta

61

de SQL Server:

  • Archivo-> Nueva traza
  • Se muestra la pestaña "General".
  • Aquí puede elegir "Guardar en archivo:" por lo que se registra en un archivo.
  • Ver la pestaña "Selección de evento"
  • Seleccione los elementos que desea registrar.
  • TSQL-> SQL: BatchStarting obtendrá sql selecciona
  • Procedimientos almacenados-> RPC: Completado obtendrá los procedimientos almacenados.

Más información de Microsoft: SQL Server 2008 Libros en pantalla - Using SQL Server Profiler

Actualización - SQL Express Edition:

Se hizo un comentario de que MS SQL Server no está disponible para la edición express .
No parece ser una alternativa libre: Profiler for Microsoft SQL Server 2005 Express Edition

+2

Gracias. Sin embargo, no está disponible en Express :-( –

+2

No he intentado esto personalmente, pero aquí está: Profiler para Microsoft SQL Server 2005 Express Edition http://sqlprofiler.googlepages.com/ – KyleLanser

+0

Cuando llegue a trabajar mañana lo intentaré ese programa alternativo contra mssql 2008. – KyleLanser

3

Puede registrar cambios. SQL Server 2008 lo hará especialmente fácil con Change Data Capture. Pero SQL Server no es muy bueno para registrar SELECT.

Teóricamente es posible con el generador de perfiles, pero matará su rendimiento. Puede "salirse con la suya" en su escritorio, pero creo que notará que su máquina actúa lo suficientemente lento como para causar problemas. Y definitivamente no funcionará después de ningún tipo de implementación.

Un punto importante que otros dos ya se perdieron: a menos que hayan cambiado algo para el 2008 que no escuché, no se puede activar un SELECCIONAR.

+0

Gracias. Bueno, esta es una máquina de desarrollo, por lo que el rendimiento no es un problema si puedo activar/desactivar esa función. La captura de Selects en entornos de producción parece una receta para el desastre de todos modos. –

0

Usaría activadores o utilizaría un software de terceros como Red Gate para verificar sus archivos de registro de SQL.

+0

Red Gate Log Rescue solo ofrece inserciones, actualizaciones y eliminaciones. –

1

Solo para el registro, estoy incluyendo las sugerencias para usar DataWizard's SQL Performance Profiler como una respuesta separada ya que es realmente lo contrario al answer pointing at SQL Server Profiler.

Hay una versión de prueba gratuita durante 14 días, pero incluso si necesita comprarla, solo cuesta $ 20 para 3 servidores (al momento de escribir, 2012-06-28). Esto me parece más que justo teniendo en cuenta los miles que todos los usuarios de la edición SQL Server Express han guardado.

Solo he usado la versión de prueba hasta ahora y ofrece exactamente lo que el OP estaba buscando: una forma de rastrear todas las consultas que llegan a una base de datos específica. También ofrece exportar un rastreo a un archivo XML. La versión paga ofrece algunas características más, pero aún no las he probado.

Descargo de responsabilidad: Soy solo otro desarrollador jugando con DB de vez en cuando y no estoy de ninguna manera afiliado con DataWizard. Me gustó su herramienta y quería que la gente supiera que existía, ya que me ayudó con el perfil de mi instalación de SQL Server Express.

+0

Me molesta cuando una empresa decide tomar un producto que antes era de código abierto y gratuito, luego entierra completamente la versión gratuita para venderlo. Entiendo poner tiempo en un proyecto y querer monetizarlo. Pero deje las versiones antiguas por ahí, y no use un Red-Gate (.Net Reflector) donde desactive la instalación de alguien que funcione. Solo usé Anjlab porque era gratis. Si voy a gastar $ 20 en una herramienta, supongo que prefiero gastar $ 50 para obtener la edición SQL Server Developer Edition que incluye SQL Profiler y casi todo lo demás que SQL Server tiene para ofrecer. – Sam

+1

@Sam: Gracias por tu comentario. ¡No sabía que había 'Developer Edition' de SQL Server! $ 50 es un trato increíble. Y estoy de acuerdo con su punto de que las versiones antiguas del software aún deberían estar disponibles. Pero para los nuevos usuarios, realmente no siento el dolor. Ellos lo compran o no lo hacen. – Oliver

28

... respuesta tardía pero espero que sería útil para otros lectores aquí ...

Uso de SQL Server Express con los requisitos de auditoría avanzadas tales como esto no es realmente óptima a menos que sea sólo en el entorno de desarrollo.

Puede usar los rastreos (www.broes.nl/2011/10/profiling-on-sql-server-express/) para obtener los datos que necesita, pero tendrá que analizarlos usted mismo.

Existen herramientas de terceros que pueden hacer esto pero su costo será bastante alto. Log explorer de ApexSQL puede registrar todo pero seleccione y el administrador de cumplimiento Idera’s también registrará las declaraciones seleccionadas, pero su costo es mucho más elevado.

+0

¿Ha mejorado esto con el generador de perfiles que viene con SQL Server 2014 Express? – zanlok

25

Hay otra manera de obtener información acerca de las consultas que se ha ejecutado en MS SQL Server Express se describe aquí: http://blog.sqlauthority.com/2008/01/03/sql-server-2005-last-ran-query-recently-ran-query/

Brevemente, se ejecuta la consulta inteligente para las tablas del sistema y obtiene información (texto, el tiempo de ejecución) sobre consultas (o planes de consultas en caché si es necesario). De este modo, puede obtener información sobre consultas ejecutadas sin profiler en la edición MSSQL 2008 Express.

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
ORDER BY deqs.last_execution_time DESC 
+2

¡Aquí la mejor respuesta en términos de solución real y rápida, gracias! –

+1

Sí, esto lo hace! ¡Gracias! +1. –

Cuestiones relacionadas