Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Leggere una tabella sqlserver e mandare mail
giovedì 12 gennaio 2006 - 10.45
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
rossana
Profilo
| Newbie
14
messaggi | Data Invio:
gio 12 gen 2006 - 10:45
ho sql mail attivato e una tabella di log da leggere. se il campo level di questa tabella è "fatal" devo riuscire a mandarmi una mail il cui testo è contenuto nel campo "message" della stessa tabella di log.
qualcuno puo' aiutarmi con una query ad hoc???
grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 12 gen 2006 - 14:23
Ciao Rossana,
> se il campo level di questa tabella è "fatal" devo riuscire a mandarmi una mail il cui testo è contenuto nel
> campo "message" della stessa tabella di log.
Io risolverei la questione definendo un cursore che recupera il messaggio per tutte quelle righe che soddisfano il criterio di ricerca.
Guarda il seguente esempio:
USE tempdb;
GO
/* Definisco la tabella dbo.Logs */
CREATE TABLE dbo.Logs(
LogID int NOT NULL IDENTITY PRIMARY KEY,
Message varchar(12) NOT NULL,
[Level] varchar(10) NOT NULL
)
GO
/* La popolo */
INSERT dbo.Logs VALUES('Messaggio 1', 'normal');
INSERT dbo.Logs VALUES('Messaggio 2', 'warning');
INSERT dbo.Logs VALUES('Messaggio 3', 'fatal');
INSERT dbo.Logs VALUES('Messaggio 4', 'fatal');
GO
/* Dischiaro la variabile locale @Message */
DECLARE @Message varchar(12)
/* Dichiaro il cursore */
DECLARE curSendMail CURSOR FOR
SELECT Message
FROM dbo.Logs
WHERE [Level] = 'fatal'
/* Apro il cursore */
OPEN curSendMail
/* Prima lettura */
FETCH NEXT FROM curSendMail
INTO @Message
/* Loop */
WHILE @@FETCH_STATUS = 0
BEGIN
/* Invio la mail */
EXEC xp_sendmail 'Lorenzo', @Message
/* Letture successive */
FETCH NEXT FROM curSendMail
INTO @Message
END
/* Dealloco e chiudo il cursore */
CLOSE curSendMail
DEALLOCATE curSendMail
GO
/* Pulizia */
DROP TABLE dbo.Logs
Per ulteriori info siamo qua :-)
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
rossana
Profilo
| Newbie
14
messaggi | Data Invio:
gio 12 gen 2006 - 14:35
intanto grazie....poi alcune domande.
come mai hai definito una tabella su tempdb?? io ho già la mia sul mio db che è piena e popolata. posso usare lo stesso metodo anche su una tabella esistente vero?
inoltre... la xp_sendmail che è definita solo sul db master... posso usarla comunque anche sugli altri db?? i parametri che devo passarle quali sono?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 12 gen 2006 - 15:04
> come mai hai definito una tabella su tempdb?? io ho già la mia sul mio db che è piena e popolata.
> posso usare lo stesso metodo anche su una tabella esistente vero?
Certo. Ho definito la tabella nel tempdb perché è un db che sicuramente hai anche tu e quindi puoi provare il mio esempio (modificando opportunamente il recipient).
> inoltre... la xp_sendmail che è definita solo sul db master...
> posso usarla comunque anche sugli altri db??
Ovviamente si, avendo cura di specificare il database e l'owner: EXEC master.dbo.xp_sendmail
> i parametri che devo passarle quali sono?
Almeno il destinatario ed il messaggio.
La documentazione completa la trovi sui Books Online:
"xp_sendmail"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_xp_aa-sz_6hbg.asp
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
rossana
Profilo
| Newbie
14
messaggi | Data Invio:
gio 12 gen 2006 - 15:09
grazie
stavo provando e ci ero "mezza"arrivata anche da sola....
cmq grazie davvero.
Torna su
Stanze Forum
Elenco Threads
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 !