SQL SERVER EXPRESS 2008: automatinis priminimų el. paštu siuntėjas.

įvertino 0 Ši žinutė turi 6 Atsakymai | 3 Šalininkai

Top 25 autorių
Vyras
Žinutės 4
Taškai 95
Gintaras Parašyta: 12-17-2009 18:45

Sveiki, turiu tokį klausimą, kuriam kaip ir turiu atsakymą, bet norėčiau padiskutuoti ar nėra geresnių sprendimų. Taigi, turim tokią situaciją, jog su SQL SERVER EXPRESS (šiuo atveju 2008) reikia sukurti service'ą, kuris automatiškai vykdytų nurodytą procedūrą, kurioje atrinkus reikiamus adresatus yra išsiunčiamas laiškas. Problema: EXPRESS versija nepalaiko nei SQL AGENT Service'o nei SQL Mail ar Database Mail. Kol kas turimas sprendimas: SQL SERVER BROKER + CDO, bet man nepatinka tai, kad master DB, turiu guest user'iui suteikti sp_OAXXXX EXEC teises. Gal galėtumėte pasiūlyti geresnių sprendimų? gal visgi kažko nežinau iki galo ir egzistuoja kur kas paprastesnis sprendimas.

  • | Žinučių taškai: 50
Top 10 autorių
Vyras
Žinutės 106
Taškai 92,585

SQL Agento iš tiesų nėra, bet galima pasinaudoti laisvai platinamais produktais: http://sergejus.blogas.lt/atsarginis-sql-express-duomenu-baziu-kopijavimas-156.html#comment-253.

Šiaip žiūrint iš architektūrinės pusės, aš DB Mail nenaudočiau, nes kiek atsimenu, jis nebebus palaikomas nuo sekančios SQL Server versijos. Ką mes darome, tai patys pasirošome Windows servisą, kuris paselektina reikailngus duomenis, suformuoja meilus ir juos išsiunčia.

Top 10 autorių
Žinutės 32
Taškai 555

Šiaip su .NET labai lengvai rašosi Windows servisai, tai tiesiog windows servise užsuki taimerį ir kas kažkiek laiko peržiūri duomenų bazę, ar nėra laiškų, kuriuos reikia išsiųsti.

Niekada nebandžiau, bet turėtų būti įmanoma sukurti trigerį, kuris naudodamas sp_send_dbmail galėtų išsiųsti laišką.

Bet jeigu turi galimybę paleisti serveryje windows servisą, aš asmeniškai rinkčiausi pastarajį variantą - daug daugiau laisvės konfigūravimui, auditavimui ir panašiai.

Dar ir kitu požiūriu windows servisas yra gerai - jeigu sprendimas yra išsidėstęs per kelis serverius, db serveriui nebūtina atidarinėti smtp porto.

  • | Žinučių taškai: 20
Top 50 autorių
Vyras
Žinutės 1
Taškai 5

Jei nera SQL Mail, tai pasirasyti CLR procedura kuri su SmtpClient issiuncia laiska, o del SQL Agent tai yra http://www.codeproject.com/KB/database/SQLAgent.aspx

 

  • | Žinučių taškai: 5
Top 25 autorių
Vyras
Žinutės 4
Taškai 95

Mano paties pirma mintis ir buvo, jog reikia sukurti Windows Service'ą, kuris atliks reikiamus veiksmus, deja, turiu išsisukti vien su SQL Server Express galimybėmis. Buvo ir man kilusi mintis rašyti trigger'į, bet niekaip neradau informacijos apie tai, kaip parašyti tokį trigger'į, kuris vykdomas tam tikrais laiko intervalais. Gal turite nuorodų su tokia informacija?

P.S. pamiršau pirmoje žinutėje paminėti, jog turiu išsisukti tik su SQL Server Express teikiamomis galimybėmis ir Windows Service'o naudoti negaliu.

 

  • | Žinučių taškai: 20
Top 10 autorių
Žinutės 32
Taškai 555

Tai kiek aš supratu, įvyksta kažkoks įvykis(atsiranda naujas įrašas arba atnaujinamas įrašas) duomenų bazėje ir tada reikia išsiųsti email'ą? Tai ant to įvykio ir kabini trigerį, kai tik jis įvyks, tada ir išsisiųs emailas. Nors iš esmės trigeriai yra blogis mano supratimu ir reikia tikrai geros priežasties juos naudoti.

  • | Žinučių taškai: 20
Top 25 autorių
Vyras
Žinutės 4
Taškai 95

Na ne el. laiškas turi būti išsiunčiamas automatiškai be jokio įvykio. Situacija yra paprasta: turime užduočių sąrašą, kurios turi savo pradžios laikus, pagal kuriuos ir yra siunčiami el. priminimo laiškai. Pagal mano dabartinį variantą, SQL BROKER pagalba, kas pusvalandį yra vykdoma viena stored procedure'ą, kuri ir patikrina ar reikia, ir jei reikia, išsiunčia el. laiškus.

  • | Žinučių taškai: 5
Puslapis 1 iš 1 (7) | RSS
DotNetGroup.LT, 2009
Sprendimas