Código de SQL - Ejecutar un proceso cada segundo exacto en sql server

sin imagen de perfil

Ejecutar un proceso cada segundo exacto en sql servergráfica de visualizaciones


SQL

Publicado el 17 de Diciembre del 2012 por Xebas Garcia
20.852 visualizaciones desde el 17 de Diciembre del 2012
Query que muestra como ejecutar un proceso/instrucción cada segundo.

Básicamente, hay un contador (@c) que va a ir incrementando según un intervalo de tiempo (@time = @sec + 1 ) , en este caso 1 segundo (es el que aparece a la derecha de @sec) y lo limite a que el contador llegue a 5 (en el while, para no hacerlo tan grande pero puede hacerse un bucle infinito para que funcione como un reloj y funcione exactamente como lo es con el famoso "Timer" o "setInterval").

@sec: Es el segundo REAL, obtenido del servidor donde esté alojada la base de datos. ( GETDATE() )
@time: Es a donde tiene que llegar el segundero para poder cumplir la acción (es un select, pero por ejemplo puede expandirse con EXEC (@syntaxSql) para hacerlo más customizable)

Funciona en SQL Server 2000/2005/2008/2008 R2

Versión 1
estrellaestrellaestrellaestrellaestrella(4)

Publicado el 17 de Diciembre del 2012gráfica de visualizaciones de la versión: Versión 1
20.853 visualizaciones desde el 17 de Diciembre del 2012
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
declare @sec int --Segundos RELOJ!
 
declare @time int -- Cada cuanto queremos que se actualice el contador?
 
set @sec = convert(int,right(convert(varchar,GETDATE(),108),2)) -- Asigno los segundos reales
 
/*
	Yo quiero que se actualice el contador cada 1 segundo real.
	
	Si por ejemplo mi segundero va por 20 y yo quiero que se actualice mi contador cada 1 segundo entonces, 
	cuando el segundero llegue a 21 va a actualizarse.
*/
set @time = @sec + 1
 
 
declare @c int -- Declaro mi contador
set @c = 0 -- Seteo valor default en 0
 
while @c < 5 -- Mientras que mi contador sea menos a 10, va a ir incrementando en 1 cada 1 segundo.
	BEGIN
		if @sec = @time -- Si el segundero alcanzó los 3 segundos
			BEGIN
 
				-- Muestro el cartel
				select GETDATE(),'La cuenta incrementa cada 1 segundo! : ' + convert(varchar,@c + 1 )
 
				-- Como llegue a 1 segundo tengo que sumarle 1 mas a @time, para que continue la cuenta.
				set @time = (@time + 1)
 
				-- Incremento en 1 mi contador
				set @c = @c + 1
 
				-- Esto para el caso que el segundero alcance 59
				if @time >= 60
					BEGIN
						set @time = 0 -- Seteo en cero y cuando coincida volvera a sumar 1 y así sucesivamente!!
					END
			END
 
			set @sec = convert(int,right(convert(varchar,GETDATE(),108),2)) -- Actualizo segundero
	END



Comentarios sobre la versión: Versión 1 (4)

16 de Mayo del 2018
estrellaestrellaestrellaestrellaestrella
Muy bueno
Responder
pablo
22 de Octubre del 2019
estrellaestrellaestrellaestrellaestrella
Muy bueno. y si quiero hacerlo como un clock que no termine, como lo hago?
Responder
Manuel
20 de Marzo del 2020
estrellaestrellaestrellaestrellaestrella
Buen día amigo, tengo una duda, mientras ese proceso esta corriendo en sel servidor puedo hacer llamadas, como si fueran hilos, o tengo que esperar a que la pila de procesos se vacíe??
Responder
Juan Antonio
4 de Junio del 2020
estrellaestrellaestrellaestrellaestrella
Muy buen aporte. Hay valores que puedes modificar:

Por ejemplo, Linea 19, cambia el 5 por las veces que quieres que se ejecute.

Linea 28, cambia el 1 por la cantidad de segundos para que transcurra de nuevo (300 es cada 5 minutos, por ejemplo)

Y la linea 25 será el script que quieres se ejecute.

Lo implementaré en una mesa de servicio para monitorear algunas actividades sin generar un job.

Muchas Gracias.
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2265