Email automatica in base a data/ora tabella

mercoledì 26 settembre 2012 - 18.13
Tag Elenco Tags  VB.NET  |  SQL Server Express

franco.geko Profilo | Junior Member

Ciao a tutti,
non so se sia la sezione giusta ma avrei la seguente necessità.
In una tabella registro degli allarmi con data e ora di inserimento e flag attivo/non attivo.
Dovrei fare in modo che se il flag è attivo e l'ultima registrazione della tabella è superiore alle 2 ore, venga inviata un'email a una lista di persone.

Mi spiego meglio.
Entra una registrazione dell'ID 1 alle 18:10 di oggi con flag attivo.
Se non arriva almeno un altro record con ID 1 e flag disattivo entro le 20:10, devo inviare la mail.

Ho pensato di fare un programmino che ogni tot minuti prende la max data per ogni ID e la testa con l'orario della macchina.
So che funzionerebbe, ma mi piacerebbe vedere se esiste una soluzione più elegante :)

Il database è SQL server Express 2008

Grazie
Franco

Assaggiata l'acqua, conosciuta la sorgente

renarig Profilo | Expert

> ma mi piacerebbe vedere se esiste una soluzione più elegante


Non mi viene in mente nulla di meglio

__ la base dati penso che non la puoi cambiare ( del resto SQLServer2008 è ottima )
__ La applicazione deve ( salvo smentite ) essere necessariamente esterna alla base dati




ma sono curioso di vedere se qualcuno piu esperto ci da delle alternative


.

ma_di Profilo | Junior Member


Ciao.
Un'altra soluzione potrebbe essere un trigger sull'insert della tabella tale da scatenarti una stored procedure che faccia il medesimo lavoro; in questo modo non sei vincolato all'esecuzione di un programma esterno.
Sul 2008 express non ho esperienza, quindi non so dirti nulla in merito all'invio della mail; sul 2000 server esistevano i job, all'interno del quale si potevano configurare una serie di operazioni da eseguire; magari se vuoi puoi documentarti in merito ( ... e ne approfitto per farlo anch'io)
Se non fattibile mi muoverei nello stesso modo che hai illustrato, magari pensando allo sviluppo di un servizio piuttosto che un programma, in modo tale da essere certo che sia sempre in esecuzione.
Ciao.

franco.geko Profilo | Junior Member

>
>Ciao.
>Un'altra soluzione potrebbe essere un trigger sull'insert della
>tabella tale da scatenarti una stored procedure che faccia il
>medesimo lavoro; in questo modo non sei vincolato all'esecuzione
>di un programma esterno.
>Sul 2008 express non ho esperienza, quindi non so dirti nulla
>in merito all'invio della mail; sul 2000 server esistevano i
>job, all'interno del quale si potevano configurare una serie
>di operazioni da eseguire; magari se vuoi puoi documentarti in
>merito ( ... e ne approfitto per farlo anch'io)

mmmhhhh...
non so come fare con una stored procedure.
Nel senso: mi entra il record con data/ora attuale (diciamo che la notifica dell'evento è quasi immediata).
Il trigger scatena una sored procedure la quale dovrebbe far partire un timer che a distanza del tempo prestabilito (facciamo finta le 2 ore iniziai) invii ina email SOLO SE nel frattempo l'allarme non è rientrato.
...non saprei come fare a meno di usare funzioni scritte in VB.NET o in C# storate nel DB...a questo punto preferisco un programma in polling per controllare lo stato del record nella tabella.
:)

>Se non fattibile mi muoverei nello stesso modo che hai illustrato,
>magari pensando allo sviluppo di un servizio piuttosto che un
>programma, in modo tale da essere certo che sia sempre in esecuzione.
>Ciao.

Si, credo che in assenza di soluzioni migliori seguirò la strada di un servizio windows...:)

Grazie
Franco
Assaggiata l'acqua, conosciuta la sorgente
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5