Hej, Jag skulle nog skapat en trigger på varje tabell som skall hanteras, sen skriva ner datat samlat i en annan tabell för att samla loggarna för insert, update och delete - sen vad den tabellen skall innehålla är däremot upp till dig. Lycka till. Kanske inte tillför så mycket till ursprungsfrågan men ställer mig tveksam till triggers. I mitt tycke så är de inte bra ur ett underhållsperspektiv om vi pratar MS SQL. De är väldigt osynliga och därmed så blir det väldigt svårt att komma på att buggen man letar efter ligger just där. Det beror kanske lite på vad man ska använda loggen till och hur viktig den är. Men att bygga in massa logik i triggers är nog ingen bra idé som sagt. Rent allmänt gäller det väl att administratörer kan gå in bakvägen och göra ändringar i system så det är nog inget som bara gäller för triggers. Loggar man t.ex. till en textfil som det skrivs till i koden så syns det ju inte om jag gör en ändring direkt i databasen t.ex. Tack för informationen, Jag har stored procedures till allt jag sätter in uppdaterar etc. För att hålla reda på när en post satts in eller uppdaterades så använder jag en trigger som nedan Egentligen tycker jag inte frågan om vad som ska loggas är en teknisk fråga. Det är snarare en verksamhetsfråga/affärsfråga. Vad ska loggarna användas till? Ska dom användas som bevis för något och i så fall vad? Ska kundbeteende loggas? Är det en fellogg eller en revisionslogg? Hur länge ska loggarna sparas? Hur tillgängliga är loggarna och för vem? Ska något övervakningssystem granska loggarna med jämna intervall och skicka larm till någon? Som du märker finns det en mängd frågor att ställa sig om loggar. Ingen kan svara på vad just din applikation och din organisation har för behov i ett sånthär forum. Spana in log4net. Den är suverän. http://logging.apache.org/log4net/Spara ändringar i Logg
Håller på att designa ett nytt system som ska utvecklas i .net
Har kollat en hel de på Pattern & practices och där verkar det finnas en hel del bra saker för data access, felhantering mm. Dock har jag inte hittat ngn bra information om hur man loggar ändringar av data i systemet. Dvs om en användare ändrar på information om en kund ska man kunna spåra vem som gjort ändringen och vad för ändringar som gjorts. Ngn som vet ett bra sätt att hantera detta. I vilket lager ska man implemtera loggning, databas, DAL eller ??? och vad vad ska man spara ner för data?
/StefanSv: Spara ändringar i Logg
Sv:Spara ändringar i Logg
En annan sak att tänka på är att om man ska logga alla ändringar så är det ju viktigt att man vet att alla ändringar loggats. Då även de som en databasadministratör kan göra utan att använda sig av logiken.Sv: Spara ändringar i Logg
Sv:Spara ändringar i Logg
Vet inte om jag kommit så mycket närmare en lösning men ;)
Vet att jag var lite otydlig men "med vad vad ska man spara ner för data?" menade jag snarara om man skulle lagra hela den gamla posten, eller kanske bara de värden som ändrats eller?Sv: Spara ändringar i Logg
<code>
...
i tabellen
[changed] [datetime] NULL CONSTRAINT [DF_tblInvFile_changed] DEFAULT (GetDate()),
...
CREATE TRIGGER triInvObjUpdate ON tblInvObject FOR UPDATE AS
if NOT UPDATE(changed) UPDATE tblInvObject SET changed = getdate() WHERE [ID] in (SELECT [id] FROM Inserted);
</code>
I tabellen har jag även ett fält för vilken användare som gjorde senaste ändringen. Det blir ju inte en riktig logg men man kan se vem som gjorde sista ändringen.
Ett annat problem är ju att edt inte finns logg på vad som tagits bort. Ett alternativ kan vara att ha ett fält som "bit" med "borttagen" och i select kolla fall raden är "borttagen". Om det ofta är poster som tas bort är inte detta den bästa lösningen, men funmar bra på system där poster sällan tas bort och när de tas bort är det oftast av misstag. (Blir lätt att göra "undelete")Sv:Spara ändringar i Logg
Tekniskt så skulle jag nog säga att det finns flera alternativ beroende på vad du har för behov
* Windows Eventlog
* Logga till fil (med egen multitrådad loggklass) som ev. läses in i databas med visst intervall
* Logga till databas
Jag tycker att en kombination av Windows Eventlog och fil är bra i de flesta fall. Felloggar till Eventloggen och en egen fil. Händelse/Revisionslogg till en egen fil. Med revisionslogg menar jag händelser i systemet. System A anropar System B. System B svarar System A. Kund X loggar in. Kund X loggar ut. Osv.Sv: Spara ändringar i Logg