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

 

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

Απενεργοποίηση Triggers σε SQL Server 2005

Îåêßíçóå áðü ôï ìÝëïò JohnieG. Τελευταία δημοσίευση από το μέλος dimkas στις 03-05-2006, 14:00. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-04-2006, 16:33 11999

    Απενεργοποίηση Triggers σε SQL Server 2005

    Καλησπέρα,

       Προσπαθώ να περάσω δεδομένα από Access 2003 σε SQL Server 2005. Ενώ έχω δημιουργήσει insert triggers στον SQL, οι οποίοι και δουλεύουν όταν πάω να εισάγω μια εγγραφή απευθείας στον Server, κατά τη διαδικασία της εισαγωγής από την Access μέσω του Data Import Wizard οι ίδιοι triggers φαίνονται είτε σαν να είναι απενεργοποιημένοι είτε για κάποιο λόγο δεν δουλεύουν. Το αποτέλεσμα είναι κατά τη διάρκεια μιας τέτοιας εισαγωγής να μην μπορώ να κάνω validate τις εγγραφές που περνάω. Για παράδειγμα μου περνάει εγγραφές από πίνακα detail χωρίς να υπάρχουν οι αντίστοιχες απαιτούμενες στο header. Να σημειώσω βέβαια πως για να διατηρήσω την υπάρχουσα αρίθμηση στους πίνακες μου τσεκάρω το identity insert enabled.

       Υπάρχει κάποια ρύθμιση στον SQL Server ή στον Data Import Wizard  που μου ξεφεύγει η οποία και απενεργοποιεί τους triggers ή είναι κάποιο γενικότερο πρόβλημα της όλης διαδικασίας???

       Κάθε ιδέα,συμβουλή η παραπομπή είναι ευπρόσδεκτη....


    Always Look On The Bright Side Of Life...
  •  25-04-2006, 07:08 12074 σε απάντηση της 11999

    Απ: Απενεργοποίηση Triggers σε SQL Server 2005

    Μπορείς πρίν ξεκινήσεις την εισαγωγή νά κάνεις disable τους triggers στον SQL όπωςπαρακάτω

    declare @tblName varchar(255)

    declare cur1 cursor for

    select name from sysobjects where Upper(type)='U'

    open cur1

    fetch next from cur1 into @tblName

    while @@fetch_status<>-1

    begin

    exec ('alter table '+@tblName+' disable trigger all')

    fetch next from cur1 into @tblName

    end

    close cur1

    deallocate cur1

    άν τρέξεις το παραπάνω script όλοι οι triggers θά απενεργοποιηθούν.

    Κατόπιν αφού κάνεις την ειαγωγή αντικατέστησε το disable με enable και τρέξε το script για να τους επανενεργοποιήσεις


    Ιωάννης Μανουσάκης
  •  25-04-2006, 10:07 12075 σε απάντηση της 12074

    Απ: Απενεργοποίηση Triggers σε SQL Server 2005

    Δεν υπάρχει λόγος να γίνει κάτι τόσο περίπλοκο. Η δυνατότητα ενεργοποίησης/απενεργοποίησης των trigger κατά τη διάρκεια ενός import υπάρχει, απλά δεν εμφανίζεται στον Data Import Wizard (χαζόοοοοοοο) και είναι default off. Πιθανώς, κάποιοι θεωρήσαν ότι είναι κακή ιδέα να τρέχουν τα triggers κατά τη διάρκεια ενός import. Όχι ότι έχουν άδικο, αλλά καλό θα ήταν να μπορούμε να αλλάξουμε την επιλογή.

    Αυτό που κάνει στην ουσία ο Data Import Wizard είναι να δημιουργεί ένα πακέτο SSIS το οποίο περιέχει ένα Data Import Task και να το εκτελεί. Στις ρυθμίσεις του Data Import Task υπάρχει και η επιλογή "Fire Triggers". Αυτό που μπορείς να κάνεις είναι αντί να εκτελέσεις το πακέτο που φτιάχνει ο Data Import Wizard, να το αποθηκεύσεις και να το ανοίξεις. Ενεργοποιείς το "Fire Triggers" και είσαι εντάξει.

    Θα πρέπει πάντως να έχεις υπόψη ότι η χρήση Import και triggers είναι αρκετά αργή λύση, ενώ δεν σου επιτρέπει να χειριστείς και πιθανά λάθη. Ο λόγος είναι ότι τα triggers πρέπει να τρέξουν για κάθε γραμμή που εισάγεις στους πίνακες, καθυστερώντας τη διαδικασία του import. Καλύτερα θα ήταν να φτιάξεις ένα πακέτο SSIS το οποίο θα εισάγει όλες τις εγγραφές στους πίνακες που θέλεις και μετά θα εκτελεί τα scripts που θα ήθελες σε ολόκληρους τους πίνακες, όχι σε μία-μία εγγραφή. Η διαφορά ταχύτητας μπορεί να είναι δραματική.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-05-2006, 14:00 12280 σε απάντηση της 11999

    Απ: Απενεργοποίηση Triggers σε SQL Server 2005

    Καλησπέρα,

    Αντιμετωπίζω κι εγώ παρόμοιο πρόβλημα. Ακολούθησα τη μέθοδο, την οποία προτείνει ο 'pkanavos', αλλά δε μπόρεσα να βρώ πουθενά την επιλογή "Fire Triggers"! Μήπως θα μπορούσατε να μου πείτε που ακριβώς βρίσκεται αυτή η επιλογή του "Fire Triggers"? Χρησιμοποιώ SQL Server 2005 Enterprise Edition.

    Σας ευχαριστώ εκ των προτέρων.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems