Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

χρήση sp_send_dbmail

Îåêßíçóå áðü ôï ìÝëïò agmarios. Τελευταία δημοσίευση από το μέλος KelMan στις 30-08-2007, 21:22. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-08-2007, 12:20 34566

    χρήση sp_send_dbmail

    έχω ένα temp πίνακα τον οποίο γεμίζω με στοιχεία από την βάση και ο οποίος έχει 2 βασικά πεδία το email address και το body και θέλω να στείλω ένα email σε κάθε μια διευθυνση του πίνακα.
    Χρησιμοποιώ τη sp_send_dbmail μέσα σε έναν cursor και γράφω κάτι που μοιάζει πολύ με το:

    DECLARE email_cursor CURSOR LOCAL FAST_FORWARD FOR
    SELECT rejectReason,cEmail
    FROM @toReject

    OPEN email_cursor
    FETCH NEXT FROM email_cursor INTO @rejectReason,@custEmail

    WHILE (@@FETCH_STATUS = 0) BEGIN
      exec msdb.dbo.sp_send_dbmail
      @recipients= @custEmail,
      @subject = Ν'order rejected',
      @body = @rejectReason

      FETCH NEXT FROM email_cursor INTO @rejectReason,@custEmail
    END

    CLOSE email_cursor
    DEALLOCATE email_cursor


    Υπάρχει τρόπος να αποφύγω τη χρήση cursor;
    Να σημειώσω ότι η συγκεκριμένη ενέργεια τρέχει ανά 10 λεπτά (με agent job) στον server και δεν αναμένεται να στέλνει πολλά emails. (ξέρω το πολλά είναι αόριστο αλλά μιλάμε για το πολύ 1000 συνολικά την ημέρα, αν είναι παραπάνω θα υπάρχουν λεφτά για πολλές επιλογές)
  •  30-08-2007, 21:22 34625 σε απάντηση της 34566

    Απ: χρήση sp_send_dbmail

    Μπορείς να αποφύγεις τους cursors. Σε αυτό το blog-post παρουσιάζω μια τεχνική για iteration χωρίς χρήση cursors. Βάζοντας ένα τρίτο πεδίο flag στον temp πίνακα, μπορείς να την προσαρμόσεις ώστε μέσα το transaction να να κάνει sp_send_dbmail και κατόπιν UPDATE το flag σε κατάσταση set. Πριν ξεκινήσει η διαδικασία, θέτεις με ένα UPDATE το flag από όλες τις εγγραφές σε κατάσταση "un-set".


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems