Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 10:16 Der er 13 kommentarer og
1 løsning

Sende mail når værdi højere end -15C

Kan man i SQL Server definere, hmmm....en trigger, som løbende overvåger poster i databasen (der indsættes ca. 100 poster hver 30 min.), som sender en mail til en given adresse, indeholdende værdien af feltet?
Sagen er at vi har kig på et produkt, FlexAlert, som selv sender mail (altså ikke fra SQL Server), men det virker ikke rigtigt.
Avatar billede skwat Praktikant
09. december 2005 - 10:19 #1
Ja, det kan man nemt. kan du give tabel specs. med hvilke felt det drejer sig om så skal du se.
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 10:29 #2
Jeg tænker på noget a la dette eksempel (fra MCSE training kit: Microsoft SQL Server 2000 Database Design And Implementing):

USE BookShopDB
GO
CREATE TRIGGER dbo.alerter
ON dbo.employees
AFTER INSERT, UPDATE, DELETE
AS
EXEC master..xp_sendmail ‘BarryT’,
‘A record was just inserted, updated or deleted in the Employees table.’
GO

Så skal der bare tilføjes noget kode der checker om værdien i min tabel er større/mindre end tilladt..... :(
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 10:43 #3
Ja.

Databasenavn: Logger
Tabelnavn: Aflæsninger
Feltnavn: Tæller

Andre felter der gerne skulle med i mailen:
Dato, Klokkeslæt og Måler
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 10:47 #4
Her er hvad jeg har indtil videre:

CREATE TRIGGER alerter
ON [dbo].[LabelDB]
AFTER UPDATE, INSERT
AS
EXEC master..xp_sendmail 'MitNavn',
'A record was just inserted or updated in the MinTabel table.'
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 11:27 #5
Nu er jeg ved at have noget der ligner noget, men jeg vil gerne tilføje dato og klokkeslæt for aktivering af triggeren (troede man bare kunne "vedhæfte" datoen ved at skrive + Date, men den går ikke)

CREATE TRIGGER alerter
ON [dbo].[minDatabase]
AFTER UPDATE, INSERT
AS
DECLARE
          @recipients_var as varchar(255),
          @subject_var as varchar(255),
          @message_var as varchar(255),

SELECT @message_var = [minFelt] FROM minDatabase
SELECT @recipients_var  = 'minMailadresse'
SELECT @subject_var = 'A record was just inserted or updated in the minTabel table.'
EXEC master..xp_sendmail
        @recipients = @recipients_var,
        @subject = @subject_var,
        @message = @message_var
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 11:59 #6
Hvordan hægter man en streng sammen med en variabel? (har prøvet med "+", "AND" og "&")
@subject = 'Værdien af feltet er: ' + @subject_var
Avatar billede thenuttyprofessor Nybegynder
09. december 2005 - 12:12 #7
Ok, det fandt jeg ud af, men hvordan laver man linebreaks?
Avatar billede skwat Praktikant
09. december 2005 - 13:31 #8
'a' + char(13) + 'b' skulle gøre det.
Avatar billede skwat Praktikant
09. december 2005 - 13:33 #9
men jeg kan forstå du næsten er færdig med det, mangler der andet?
Avatar billede skwat Praktikant
09. december 2005 - 13:34 #10
dato fåes med getdate()
Avatar billede puppetmaster Nybegynder
09. december 2005 - 13:42 #11
Det må jeg lige prøve.... :)
Avatar billede puppetmaster Nybegynder
09. december 2005 - 13:48 #12
char(13) virker fint, men den er ikke så meget for det med datoen, kan skyldes at variablen som datoen skal concateneres med er af typen varchar(255)?
Avatar billede skwat Praktikant
12. december 2005 - 23:44 #13
du skal smide datoen igennem convert
eks. convert(char(20), getdate(), 105)
105 er convert typen, som kommer an på hvilket format du vil have. Convert er godt beskrevet i online books
Avatar billede thenuttyprofessor Nybegynder
04. marts 2012 - 22:46 #14
*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester