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

 

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

trigger vs logfile

Îåêßíçóå áðü ôï ìÝëïò maria_papan. Τελευταία δημοσίευση από το μέλος Markos στις 03-04-2009, 14:32. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-04-2009, 20:35 49808

    trigger vs logfile

    Καλσιπέρα...

    Με ζήτησαν από ητη δουλεία να φτίαξω ενα logfile κάθε που θα γίνεται select,Insert, update στην ΒΔ. Δηλαδη να αποθηκεύεται σε ένα logfile το τι ενέργεια έκανε, το username του και την ώρα που έγινε η ενέργεια.

    θέλω ένα απλό παράδειγμα με trigger, ας πούμε για ενα select, και με πολύ απλά λογια τι είναι το trigger.

  •  02-04-2009, 22:16 49810 σε απάντηση της 49808

    Απ: trigger vs logfile

    Τι είναι trigger: http://en.wikipedia.org/wiki/Database_trigger

    Δεν νομίζω ότι υπάρχει trigger που να λειτουργεί στο select.

    Αυτή τη δουλειά μπορεί να την κάνει και ο sql server profiler. Βέβαια αυτό είναι εξωτερικό αυτόνομο πρόγραμμα και δεν νομίζω να μπορείς να το εκμεταλευτείς με κώδικα.

    Επειδή είπα ήδη δυο "νομίζω", νομίζω ότι πρέπει να αφήσω κάποιον άλλον να μιλήσει γι αυτό το θέμα! Big Smile


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  02-04-2009, 23:52 49817 σε απάντηση της 49808

    Απ: trigger vs logfile

    Αυτό που περιγράφεις ονομάζεται auditing και μπορείς να τo κάνεις σε επίπεδο βάσης ή σε επίπεδο εφαρμογής.

    Σε επίπεδο βάσης, τα SELECT statements δεν υποστηρίζουν triggers πράγμα που σημαίνει ότι θα πρέπει να τα αντικαταστήσεις με user defined functions ή stored procedures που θα εισάγουν τα απαραίτητα data στον πίνακα που θα περιέχει την audit πληροφορία. Επιπρόσθετα, ανάλογα με το πως θα στηθεί το security μοντέλο του SQL Server, μπορεί να μην έχεις την πληροφορία του user που κάνει την ενέργεια καθώς ενδέχεται όλοι οι χρήστες να γίνονται map σε ένα account στον SQL Server. Εναλλακτικά, μπορείς να το κάνεις με τον Profiler αλλά εκεί πρέπει να ζυγίσεις το θέμα του overhead που έχει το tracing. Στον SQL Server 2008 έχουν προσθέσει ένα χαρακτηριστικό που λέγεται "SQL Server Audit" που είναι πιο lightweight από το tracing. Δες εδώ για περισσότερες πληροφορίες: http://msdn.microsoft.com/en-us/library/cc280386.aspx, http://msdn.microsoft.com/en-us/library/dd392015.aspx

    Σε επίπεδο εφαρμογής, απλά θα πρέπει να φροντίζεις πριν ή/και μετά από κάθε data access operation να γράφεις σε κάποιον άλλον πίνακα τις πληροφορίες που σε ενδιαφέρουν. Ακούγεται εύκολο ωστόσο αν δεν σχεδιαστεί σωστά θα καταλλήξεις να έχεις πολύ μπερδεμένο κώδικα καθώς θα μπλέκεται το auditing με το business logic. Επίσης, αν κάποιος (που ξέρει τον τρόπο) συνδεθεί μέσω SQL Server Management Studio, θα μπορεί να στείλει οποιοδήποτε query προς τη βάση χωρίς να καταγραφεί η ενέργειά του.


    Vir prudens non contra ventum mingit
  •  03-04-2009, 14:32 49837 σε απάντηση της 49808

    Απ: trigger vs logfile

    Μπορείς να ρίξεις και μια ματιά εδώ. Τόσο το ίδιο το άρθρο όσο και οι παραπομπές και τα σχόλια έχουν ενδιαφέρον. Δεν έχω χρησιμοποιήσει τα scripts για να σου πω αν δουλεύουν ή αν ταιριάζουν 100% στη δική σου περίπτωση, αλλά φαντάζομαι ότι μπορείς να τα τροποποιήσεις. Επειδή στο post σου "απουσιάζει" επιδεικτικά το delete action, μήπως αντί για select ήθελες να γράψεις delete; Τέλος, αν σε μία μηχανή αναζήτησης βάλεις "sql sever auditing" ή "sql server 2005 auditing" θα σου επιστρέψει πολλά και ενδιαφέροντα αποτελέσματα.


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