2009-03-31 7 views
6

Cuando SQL Server (2000/2005/2008) se está ejecutando lento, ¿cuál es el primer comando que ejecuta para ver dónde está el problema?¿Cuál es su PRIMER comando SQL que se ejecuta para solucionar el rendimiento del Servidor SQL?

El propósito de esta pregunta es que, cuando se compilan todas las respuestas, otros usuarios pueden beneficiarse al ejecutar su comando de elección para segregar dónde podría estar el problema. Existen otras publicaciones de troubleshooting relacionadas con el rendimiento de SQL Server pero pueden ser útiles solo para casos específicos.

Si sacas a cabo y ejecutar su propio script SQL personalizada,
entonces habría que dejar que los demás sepan lo que

  • la propósito del guión es
  • devuelve (valor de retorno)
  • hacer para averiguar dónde está el problema

Si pudiera proporcionar la fuente del guión, pl facilitar la publicación.

En mi caso,

sp_lock 

corro para averiguar si hay alguna cerraduras (propósito) para devolver información de bloqueo de SQL Server. Dado que el conjunto de resultados muestra las ID de los objetos (por lo tanto, no son legibles por el hombre), normalmente hojearé el resultado para ver si hay anormalmente muchos bloqueos.


dude en actualizar las etiquetas

Respuesta

1
sp_who 

http://msdn.microsoft.com/en-us/library/aa260384(SQL.80).aspx

Quiero ver "quién", lo que las máquinas/usuarios están ejecutando lo consulta, la duración de tiempo, etc. También puedo fácilmente escanee por bloques.

Si algo está bloqueando un montón de otras transacciones, puedo usar el spid para emitir un comando kill si es necesario.

1

sp_who_3 - Proporciona una gran cantidad de información disponible en otro lugar pero en una salida agradable. También tiene varios parámetros para permitir salida personalizada.

1

Una consulta personalizada que combina lo que cabría esperar en sp_who con DBCC INPUTBUFFER (spid) para obtener el último texto de consulta en cada spid ordenado por el gráfico bloqueado/bloqueado.

Los datos de proceso están disponibles a través de master..sysprocesses.

1

sp_who3 devuelve standand sp_who2 salida, hasta que especifique un spid específico, luego da 6 diferentes conjuntos de registros sobre ese spid incluyendo bloqueos, bloques, lo que está haciendo actualmente, el T/SQL se está ejecutando, y la declaración dentro del T/SQL que se está ejecutando actualmente.

2

¿Por qué ejecutar una sola consulta cuando una imagen vale más que mil palabras!

Prefiero ejecutar el Performance Dashboard Reports libremente disponible.

Proporcionan una visión general completa de la instantánea del rendimiento de su servidor en cuestión de segundos. A continuación, puede elegir un área específica para investigar (bloqueo, consultas en curso, solicitudes de espera, etc.) simplemente haciendo clic en el área correspondiente del Tablero.

http://www.microsoft.com/downloads/details.aspx?FamilyId=1d3a4a0d-7e0c-4730-8204-e419218c1efc&displaylang=en

Una ligera amonestación, que creo éstos sólo están disponibles en SQL 2005 y anteriormente.

1

Ian Stirk tiene un gran guión me gusta usar como se detalla en este artículo: http://msdn2.microsoft.com/en-ca/magazine/cc135978.aspx

En particular, me gustan los índices que faltan uno:

SELECT 
    DatabaseName = DB_NAME(database_id) 
    ,[Number Indexes Missing] = count(*) 
FROM sys.dm_db_missing_index_details 
GROUP BY DB_NAME(database_id) 
ORDER BY 2 DESC; 
1

DBCC OPENTRAN a ver lo que la transacción activa más antigua se

Muestra información sobre la más antigua transacción activa y el más antiguo distribuye y transacciones no replicadas replicadas, si las hubiera, dentro de la base de datos especificada. Los resultados se muestran solo si hay una transacción activa o si la base de datos contiene información de replicación. Se muestra un mensaje informativo si no hay transacciones activas.

seguido por sp_who2

Cuestiones relacionadas