SQL Server 2005 - διαχείριση συγχρονισμός για πίνακες

ψήφοι
1

Έχω σε μια εφαρμογή ASP.NET αυτή τη διαδικασία:

  • Ξεκινήστε μια σύνδεση
  • Ξεκινήστε μια συναλλαγή
  • Τοποθετήστε σε ένα τραπέζι «LoadData» πολλές τιμές με την κατηγορία SqlBulkCopy με μια στήλη που περιέχει ένα συγκεκριμένο LoadId.
  • Καλέστε μια αποθηκευμένη διαδικασία που:
    • διαβάστε τον πίνακα «LoadData» για τη συγκεκριμένη LoadId.
    • Για κάθε γραμμή κάνει πολλά υπολογισμών που προϋποθέτει την ανάγνωση δεκάδες πίνακες και να γράφουν τα αποτελέσματα σε ένα προσωρινό (#temp) πίνακα (διαδικασία που διαρκούν αρκετά λεπτά).
    • Διαγράφει τις γραμμές στο «LoadDate» για τη συγκεκριμένη LoadId.
    • Αφού όλα γίνονται, γράψτε το αποτέλεσμα στον πίνακα αποτελεσμάτων.
  • Δέσμευση συναλλαγή ή επαναφορά αν κάτι αποτύχει.

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

Ψάχνω για έναν τρόπο για να είναι σε θέση να έχουν τους χρήστες που κάνει τα πάντα παράλληλα, καθώς δεν υπάρχει αλληλεπίδραση, εκτός από το τελευταίο: γράφοντας το αποτέλεσμα. Νομίζω ότι αυτό που μου επιτρέπει να είναι τα ένθετα / διαγράφει στον πίνακα «LoadData». Έλεγξα τα άλλα επίπεδα απομόνωσης συναλλαγής, αλλά φαίνεται ότι τίποτα δεν θα μπορούσε να με βοηθήσει.

Ποια θα ήταν ιδανικό θα ήταν να είναι σε θέση να αφαιρέσει το αποκλειστικό κλείδωμα στο τραπέζι «LoadData» (είναι δυνατόν να αναγκάσει SqlServer να κλειδώσετε μόνο γραμμές και όχι τραπέζι;), όταν η Εισαγωγή ολοκληρωθεί, αλλά χωρίς τον τερματισμό της συναλλαγής.

Καμία πρόταση?

Δημοσιεύθηκε 09/12/2008 στις 14:38
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
1

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

Απαντήθηκε 09/12/2008 στις 15:24
πηγή χρήστη

ψήφοι
1

Αναζητήστε SET ΣΥΝΑΛΛΑΓΗ ΑΠΟΜΟΝΩΣΗ ΕΠΙΠΕΔΟ ΔΙΑΒΑΣΤΕ ΔΕΣΜΕΥΕΤΑΙ στιγμιότυπο με ηλεκτρονικά βιβλία.

Απαντήθηκε 09/12/2008 στις 15:04
πηγή χρήστη

ψήφοι
1

Οι συναλλαγές θα πρέπει να καλύπτει τις μικρές και γρήγορη εκτέλεση κομμάτια της SQL / κώδικα. Έχουν μια τάση να τεθεί σε εφαρμογή με διαφορετικό τρόπο σε διαφορετικές πλατφόρμες. Θα κλειδώσει πίνακες και στη συνέχεια, αναπτύξτε την κλειδαριά, όπως οι τροποποιήσεις που αναπτύσσονται κλειδώνοντας έτσι τους άλλους χρήστες από την αναζήτηση ή την ενημέρωση την ίδια γραμμή / σελίδα / πίνακα.

Γιατί να μην ξεχνάμε τη συναλλαγή, και να χειρίζονται τα σφάλματα επεξεργασίας με άλλο τρόπο; Είναι η ακεραιότητα των δεδομένων σας αληθινά να εξασφαλίζονται με τη συναλλαγή, ή μπορείτε να κάνετε χωρίς αυτό;

Απαντήθηκε 09/12/2008 στις 14:43
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more