2011-07-01 10 views
8

Supongo que lo que voy a preguntar normalmente caerá en el ámbito de las "malas prácticas", pero quiero preguntar de todos modos porque esta funcionalidad es útil para diagnosticar problemas y marcar benchmarks de larga duración.¿Hay alguna forma de detener o esperar unos minutos desde un script?

En resumen, ¿hay una función integrada en SQL Server a la que podría llamar que me permita 'pausar' durante un corto período de tiempo?

Tengo un proceso SSIS nocturno que después de exportar datos genera varios subconjuntos de datos estadísticos. Cada vez que tengo problemas con los tiempos de ejecución del paquete SSIS, tengo una serie de procedimientos de diagnóstico almacenados a los que puedo llamar que ayudan a diagnosticar en qué parte de la exportación/inserción masiva está llevando a cabo una ejecución excepcionalmente larga.

Durante la segunda mitad de mi proceso SSIS, donde genero datos estadísticos, sería realmente beneficioso si pudiera analizar dónde se puede estancar el proceso o analizar qué tan rápido puede modificar los datos en mis tablas de datos. La mayor parte del procedimiento estático comienza insertando los datos en una tabla que se pasa cíclicamente a través de bucles WHILE y se actualiza cuando se cumplen las condiciones necesarias.

Puedo consultar fácilmente mis datos para capturar una métrica específica mientras se están ejecutando mis procedimientos almacenados estadísticos. Lo que me gustaría hacer es tomar esa métrica, esperar exactamente 1 segundo (o una cantidad específica de tiempo) y tomar la métrica de nuevo para poder compararlos.

Al ser capaz de poner en práctica una 'pausa', puedo crear secuencias de comandos de diagnóstico más robustas que fuera ponga el número de inserciones, actualizaciones o cálculos están comiencen ejecutados por segundo y pueden por lo tanto la estimación qué porciones de mis procedimientos más grandes están tomando el más largo .

Supongo que puede haber algunas herramientas de diagnóstico que pueda utilizar desde SQL Server Management Studio. Lo admito, no he jugado con nada de eso. Sin embargo, generalmente si hay una herramienta dentro de SSMS, gran parte de la funcionalidad de back-end puede ser imitada por alguna forma de scripting sofisticado. Otra posible limitación para usar cualquier diagnóstico integrado es que prefiero ejecutar estas métricas mientras el paquete SSIS se ejecuta no solo mientras estoy probando los procedimientos almacenados que se ejecutan dentro del paquete.

Gracias chicos por cualquier solución o consejo! Esta solicitud no es 100% necesaria, pero mis paquetes SSIS nocturnos se están volviendo masivos y tengo que empezar a ajustar las "ruedas chirriantes" que he podido ignorar en el pasado.

+2

¿Qué pasa con la implementación de un enfoque de tabla de registro, donde sus procedimientos de ejecución larga insertar marcas de tiempo y la información de estado en una tabla separada durante la ejecución? Una traza bien estructurada de esa manera le dará la capacidad de determinar las métricas que le interesan, ¿no es así? –

Respuesta

8

tendrá que utilizar la declaración WAITFOR DELAY

+0

Eso es lo que estoy buscando. Intenté googlear este tipo de cosas (¡honesto!) Pero no pude encontrarlo. Gracias. – RLH

7

Seleccionar Getdate() - Esperar 10 segundos para ejecutar otro comando

WAITFOR RETRASO '00: 00: 10 '; hh valor --Acepte: mm: ss

Seleccionar GetDate()

Cuestiones relacionadas