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

 

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

Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

Îåêßíçóå áðü ôï ìÝëïò odytil. Τελευταία δημοσίευση από το μέλος dva στις 17-11-2009, 23:09. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-10-2009, 19:23 54713

    Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Καλησπέρα σε όλους. Είμαι νέο στο forum.

    Έχω φτιάξει κάποιο κώδικα σε ASP και έχω το εξής πρόβλημα. Στέλνω κάποια sms σε ένα smpp server και αποθηκεύω τα sms αυτά ως εγγραφές στη βάση δεδομένων (SQL SERVER 2008 EXPRESS) στον πίνακα Messages.

    Ο κώδικας είναι:

    ConnStr="Provider=SQLNCLI10;Server=DESIGN3\SQLEXPRESS;Database=databasename;Uid=username;Pwd=password;" 
    set myR  = Server.CreateObject("ADODB.RecordSet")
    with myR
    .ActiveConnection = ConnStr
    .Source = "SELECT * FROM Messages"
    .CursorLocation=3
    .CursorType=1
    .LockType=3
    .open()
    myNumbers = myNumbers & myDLVNUMB & ", " myUID = CreateVariableLengthUID(255) myR.addnew myR.fields("mUser") = session("uID") myR.fields("mSenderText") = mySender_ myR.fields("mText") = myMessageToSaveX myR.fields("mCreateDate") = formatdatetime(date, 2) myR.fields("mCreateTime") = formatdatetime(time, 4) myR.fields("mSendDate") = mySendDate2 myR.fields("mSendTime") = mySendTime myR.fields("mRecipients") = myDLVNUMB myR.fields("mStatus") = "Άγνωστη" myR.fields("mPostSMS") = postSMS myR.fields("mCreateDateTime") = myTempDate_ myR.fields("mNSMSStamp") = myDLVCODE myR.fields("mSending") = mySendingID myR.fields("mChecked") = 0 myR.update
    end wth


    Έπειτα τα μηνύματα από το sms center που είχαν σταλεί πηγαίνουν στους παραλήπτες τους και έρχεται πίσω στο server η απάντηση για την αναφορά παράδοσης.
    Η αναφορά πηγαίνει σε μία σελίδα που έχω ορίσει, η οποία παίρνει τα querysting από το URL όπως έρχεται από το sms center server και ψάχνει να βρει
    το sms που αφορά η αναφορά και το αλλάζει (π.χ. Παραδόθηκε, Δεν παρ0αδόθηκε, κτλ).

    Ο κώδικας είναι:

    ConnStr="Provider=SQLNCLI10;Server=DESIGN3\SQLEXPRESS;Database=databasename;Uid=username;Pwd=password;" 
    set myR  = Server.CreateObject("ADODB.RecordSet")
    with myR
    .ActiveConnection = ConnStr
    .Source = "SELECT mStatus, mNSMSStamp FROM Messages WHERE mNSMSStamp = '" & mySID & "'"
    'send(.source)
    .CursorLocation=3
    .CursorType=1
    .LockType=3
    .open()
    .fields("mStatus") = myStatus_
    .update
    .close
    .ActiveConnection.Close
    .ActiveConnection = nothing
    end with
    set myR = nothing


    Το πρόβλημά μου είναι ότι ενώ αποθηκεύονται τα sms κανονικά όταν τα στέλνω (με μια μικρή καθυστέρηση), επειδή καθυστερεί λίγο το σύστημα κατά την
    αποθήκευση των sms οι αναφορές έρχονται πολύ γρήγορα και δεν μπορούν να ενημερώσουν τη βάση δεδομένων διότι είναι σα να μην υπάρχουν οι εγγραφές από τα sms μέσα.

    Πως μπορώ να λύσω αυτό το πρόβλημα; Γνωρίζει κανείς; Μπορώ να κάνω το σύστημα να αποθηκευεί πιο γρήγορα τις εγγραφές των sms, έτσι ώστε να μην
    υπάρχει αυτή η καθυστέρηση. Ο πίνακας με τα sms έχει μέσα περίπου 200.000 εγγραφές.

    Ευχαριστώ!!!!! 
  •  25-10-2009, 19:47 54714 σε απάντηση της 54713

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Αυτό που θα πρότεινα για την λύση του προβλήματός σου, είναι να έφτιαχνες δύο πίνακες, ένα με τα μηνύματα, και έναν για τις αναφορές. Να μην φτιάξεις μια σχέση μεταξύ τους. Έτσι όταν έρχεται μια αναφορά την γράφεις κατευθείαν στην βάση, χωρίς κανένα πρόβλημα.

    Επίσης καλό θα ήταν να μην φτιάχνεις connections επάνω στην βάση και να ανοίγεις cursors - φτιάχνε commands με SQL που συντάσεις εκείνη τη στιγμή, όσο για τις εισαγωγές, τις ενημερώσεις αλλά και τις αναζητήσεις στην βάση. Ταιριάζουν καλύτερα στον τρόπο, που δουλεύει το asp model και θα σε βοηθήσουν να επιταχύνεις την εφαρμογή σου...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  25-10-2009, 19:58 54715 σε απάντηση της 54713

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Αν και δεν βλέπουμε πουθενά τον κώδικα που κάνει Insert, και αν υποθέσω ότι δουλεύεις σε Connected επίπεδο,

    αν και δεν έχω δουλέψει ποτέ ASP αλλά ASP.NET, τότε υπό κανονικές συνθήκες θα πρέπει να γίνει η εισαγωγή της

    εγγραφής και μετά να συνεχίσει στην απόστολή του SMS! Αν τώρα κρατάει ο SQL για κάποιο λόγο την εγγραφή σε κάποια

    ουρά, κάτι που δεν γνωρίζω, και ο κώδικας προχωράει κανονικά, κάνε έλεγχο αν όντως έχει μπεί η εγγραφή στην βάση και μετά στείλε το SMS.

    Αλλιώς νομίζω πως θα μπορούσες να κάνεις τον έλεγχο στο Callback που έρχεται απο τον SMPP Server.

     


  •  25-10-2009, 20:33 54717 σε απάντηση της 54715

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Τάσκος Γιώργος:
    Αν και δεν βλέπουμε πουθενά τον κώδικα που κάνει Insert, και αν υποθέσω ότι δουλεύεις σε Connected επίπεδο, αν και δεν έχω δουλέψει ποτέ ASP αλλά ASP.NET, τότε υπό κανονικές συνθήκες θα πρέπει να γίνει η εισαγωγή της

    Το πρώτο block κώδικα είναι αυτό που δείχνει καθαρά την εισαγωγή των δεδομένων στην βάση δεδομένων... 

     

    Τάσκος Γιώργος:
    εγγραφής και μετά να συνεχίσει στην απόστολή του SMS! Αν τώρα κρατάει ο SQL για κάποιο λόγο την εγγραφή σε κάποια ουρά, κάτι που δεν γνωρίζω, και ο κώδικας προχωράει κανονικά, κάνε έλεγχο αν όντως έχει μπεί η εγγραφή στην βάση και μετά στείλε το SMS. Αλλιώς νομίζω πως θα μπορούσες να κάνεις τον έλεγχο στο Callback που έρχεται απο τον SMPP Server.

    Τι εννοείς, όταν λες "Αν τώρα κρατάει ο SQL για κάποιο λόγο την εγγραφή σε κάποια ουρά". Σε ποια ουρά αναφέρεσαι; Μήπως συγχέεις την λειτουργία του Transaction Log, με την λειτουργία της εφαρμογής;

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  25-10-2009, 21:20 54718 σε απάντηση της 54717

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Κακώς απάντησα, είναι εκτός γνώσεων μου αυτός ο κώδικας, έγω περίμενα INSERT εντολή....κάτι σε ADO.

    Δεν υπάρχει καμμία ουρά, έχεις δίκιο για το Transaction Log...μπερδεματάκι...

     


  •  26-10-2009, 01:15 54722 σε απάντηση της 54714

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    George J. Capnias:

    Αυτό που θα πρότεινα για την λύση του προβλήματός σου, είναι να έφτιαχνες δύο πίνακες, ένα με τα μηνύματα, και έναν για τις αναφορές. Να μην φτιάξεις μια σχέση μεταξύ τους. Έτσι όταν έρχεται μια αναφορά την γράφεις κατευθείαν στην βάση, χωρίς κανένα πρόβλημα.

    Επίσης καλό θα ήταν να μην φτιάχνεις connections επάνω στην βάση και να ανοίγεις cursors - φτιάχνε commands με SQL που συντάσεις εκείνη τη στιγμή, όσο για τις εισαγωγές, τις ενημερώσεις αλλά και τις αναζητήσεις στην βάση. Ταιριάζουν καλύτερα στον τρόπο, που δουλεύει το asp model και θα σε βοηθήσουν να επιταχύνεις την εφαρμογή σου...

     

    George J.


    Σ' ευχαριστώ πολύ για την βοήθεια... Θα το δοκιμάσω με commands... Λογικά θα υπάρχει διαφορά στην ταχύτητα...
  •  17-11-2009, 23:09 55250 σε απάντηση της 54713

    Απ: Πρόβλημα ενημέρωσης εγγραφών σε SQL SERVER 2008 EXPRESS με ASP

    Αν και καθυστερημένα, αφού πάς για insert μόνο και δεν σε νοιάζει τι υπάρχει ήδη, μήπως το πρόβλημα της ταχύτητας θα το έλυνε κάτι του στύλ

    .Source = "SELECT * FROM Messages WHERE (1=0)"

    αντί για

    .Source = "SELECT * FROM Messages"
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems