Toon posts:

[MSSQL] Trigger + Triggeren van webpagina

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik zit met een probleempje. Ik heb een trigger waarmee ik na een INSERT in een tabel een webscript wil aanroepen waarvan uit een e-mail word verstuurd. Dat script doet dus niets meer dan iets sturen en eindigt daarna weer.

Nu heb ik gezocht en wat gevonden. Bijvoorbeeld met de xp_cmdshell (Extended Procedure) een VBScriptje opstart die een browser opent op de juiste URL zodat het script opgestart word op de server. Ja, het opent een browser en daar ben ik niet blij mee. Het webscript hoeft namelijk alleen maar even opgestart te worden maar om daar nou een heel browser voor te starten (en b.v. weer te sluiten d.m.v. een stukje javascript) vind ik niet veilig. Zie hier: http://www.eggheadcafe.com/articles/20010426.asp

Iemand een ander idee over hoe ik dit zou kunnen doen?

Groeten,
Wouter.

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 18-08 14:38
Waarom verstuur je niet de e-mail vanuit MSSQL? Volgens mij kan je daar ook mee e-mailen hoor...check de docs maar eens op ms.com

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Ik geloof dat SQL Server zelf ook wel mogelijkheden heeft om mails te versturen.
Kijk eens naar de xp_sendmail extended stored procedure.
Jouw manier om het via een (vb)scriptje te doen is niet zo aan te raden imho.

[ Voor 23% gewijzigd door whoami op 09-10-2003 10:08 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja ik hoor daar ook wel dingen over. 50% van de mensen zegt dat het niet kan en de andere 50% zegt dat het wel kan. Ik heb hier ook over gezicht maar kan er niets over vinden eigenlijk.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Check m'n edit. ;)

Zoek eens op de xp_sendmail procedure.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt whoami!

Verwijderd

Topicstarter
Hmm... het probleem is ook dat ik templates heb in de database. Daar staan zeg maar dingen in zoals {firstname} en {lastname} die weer vervangen worden door de juiste waarden. Dat gebeurt dus in dat e-mail script. Dat word nu wel heel lastig natuurlijk als ik de e-mails van af MSSQL verstuur lijkt me? Ik zie zo 123 geen oplossing voor dat probleem. Iemand anders wel :) ?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Je kan de waarden van het net geinserte record ophalen uit de 'inserted' tmp table in je trigger:

code:
1
SELECT * FROM inserted

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja, maar dat zijn niet de enige waarden die ik nodig heb. Kan ik waarden in variabelen stoppen binnen MSSQl en die op een of andere manier replacen in die templates (die dus ook in de database staan) om vervolgens zo'n text als een grote string te versturen als e-mail?

Wouter.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Ja, je kunt waarden in variabelen stoppen.
Kan je niet met de REPLACE functies oid aan de slag?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja, als dat mogelijk is zal ik dat wel kunnen doen.
Ok, stap 1 is om die mail functie aan de gang te krijgen. Stap 2: Dan de gehele tekst van de template uit het desbetreffende tabel lezen. Stap 3: de velden die ik nodig heb in een variabele zetten (kan dit in een array binnen MSSQL??). Stap 4: de {..}'s replacen in de template.

je hoeft niet steeds je naam onder je posts te zetten, dat leest irritant

[ Voor 13% gewijzigd door whoami op 09-10-2003 10:28 ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Verwijderd schreef op 09 October 2003 @ 10:24:
(kan dit in een array binnen MSSQL??).
Een array wordt wat moeilijk. Misschien kan je iets met een table variabele. Maar als de variabelen altijd vast zijn dan volstaat het natuurlijk ook om een
code:
1
SELECT @f = foo, @b = bar FROM inserted
te doen

Today's subliminal thought is:


Verwijderd

Wat ik doe is dat ik gewoon een aparte tabel heb aangemaakt waar ik al mijn emails in flikker.. en d.m.v. een VB script lees ik deze tabel uit en verstuur een email, op die manier belast ik SQL ook het minste (hoef je dus ook geen trigger te gebruiken om een EMAIL te versturen)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Verwijderd schreef op 09 October 2003 @ 21:15:
Wat ik doe is dat ik gewoon een aparte tabel heb aangemaakt waar ik al mijn emails in flikker.. en d.m.v. een VB script lees ik deze tabel uit en verstuur een email, op die manier belast ik SQL ook het minste (hoef je dus ook geen trigger te gebruiken om een EMAIL te versturen)
Je belast SQL Server niet, maar je belast wel je client.
Waarom zou je dat niet door SQL Server laten uitvoeren? Die heeft er niet veel moeite mee hoor....

https://fgheysels.github.io/


Verwijderd

whoami schreef op 09 oktober 2003 @ 21:24:
[...]


Je belast SQL Server niet, maar je belast wel je client.
Waarom zou je dat niet door SQL Server laten uitvoeren? Die heeft er niet veel moeite mee hoor....
Ik heb er wel problemen mee gehad, maar dat kwam door het enorme aantal en hoe druk onze server al was... En op deze manier kun je ook een betere controle bijhouden... En je hebt gelijk een handige history van wat er is verstuurd..

maar het kan natuurlijk ook gewoon via een trigger.. zo heb ik het eerst ook gedaan :)

Verwijderd

Topicstarter
Na wat onderzoek ben ik tot de conclusie gekomen dat het geheel vanuit MSSQL versturen te lastig word. Het parsen (er zijn x aantal verschillende mail templates die bij een verschillende order status verstuurd moeten worden, b.v. order binnen of order betaald) word ook erg lastig vanuit MSSQL. In mijn webscript heb ik dit allemaal al werkend. Het enige wat er dus moet gebeuren is dat als er een INSERT in een tabel word gedaan, dit webscript (ASP of PHP, maakt niet uit) word opgestart.

Iemand nog goede ideeen? :(

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Waarom heb je dat versturen eigenlijk in een webscript geschreven?
't Lijkt me niet dat iemand dit vanop het web moet kunnen uitvoeren ?

Waarom heb je dat niet gewoon in een gewone applicatie geschreven? Die kan je dan met xp_cmdexecute (of was het xp_executecmd) uitvoeren.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja daar zijn zo wat redenen voor :) . Ik moet eigenlijk gewoon weten hoe ik dus vanuit MSSQL en een trigger een webscript kan starten.
Pagina: 1