[SQL 2000 -2005] Come posso "loggare" le query e i valori assegnati ai...

mercoledì 28 ottobre 2009 - 21.45

plaguebreath Profilo | Junior Member

Salve a tutti, il mio problema è il seguente, sto programmando un applicazione in VB.NET che fa un uso massiccio di stored procedure per i vari INSERT UPDATE e DELETE di vare tabella, anche construtture ti dipo MASTER/DETAIL. Ora è sopraggiunta la necessità di poter in qualche modo registrare tutti gli eventi che succedono alla chiamata o all'esecuzione di suddette query in una tabella (o più tabelle magari con lo stesso nome delle tabelle attualmente in uso con un suffisso tipo LOG) dedicata/e al loggagio di dette operazioni e i parametri valorizzati. In un primo momento ho pensato di fare il tutto da applicazione, poi però leggendo ho letto della possibilità offerte dai Trigger vista la necessità di farlo funzionare sia su un SQL 2000 che un SQL 2005 Express. La mia conoscenza però dei Trigger è molto scarsa e quindi volevo chiedervi se una soluzione di questo tipo è applicabile e più o meno quanto spazio potrebbe occupare nel database ad esempio per una tabella che come campo opzionale ha un VARCHAR(8000) ???? L'adozione dei Trigger è una cosa fattibile e in che modo dovrei crearli ? Grazie per l'aiuto buona serata !

lbenaglia Profilo | Guru

>Ora è sopraggiunta la necessità di poter in qualche modo
>registrare tutti gli eventi che succedono alla
>chiamata o all'esecuzione di suddette query in una tabella (o
>più tabelle magari con lo stesso nome delle tabelle attualmente
>in uso con un suffisso tipo LOG) dedicata/e al loggagio di dette
>operazioni e i parametri valorizzati. In un primo momento ho
>pensato di fare il tutto da applicazione, poi però leggendo ho
>letto della possibilità offerte dai Trigger vista la necessità
>di farlo funzionare sia su un SQL 2000 che un SQL 2005 Express.

Ciao Patrizio,

L'utilizzo così massiccio dei trigger comporterebbe un sovraccarico eccessivo dell'istanza e dello spazio occupato nel db.
Se ho ben capito hai la necessità di implementare un sistema di auditing.
Sia SQL Server 2000 che 2005 sono un po' carenti da questo punto di vista, mentre SQL Server 2008 offre un nuovo motore di auditing estremamente flessibile e potente:
http://msdn.microsoft.com/en-us/library/cc280526.aspx

Mi rendo conto di non aver risposto alla tua domanda, ma con queste poche informazioni non saprei che altro aggiungere

>Grazie per l'aiuto buona serata !
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

plaguebreath Profilo | Junior Member

Ciao ! Purtroppo non ho a disposizione SQL 2008 e mi tocca arrangiarmi con quello che ho :( Quindi dici che una cosa del genere meglio che la lasci stare già subito in anticipo ??? E se ad esempio trasferissi il dato invece che su una tabella in un file fisico o xml ???? Non ci sono propio altre soluzioni per attuare una cosetta del genere ?? Sono rattristato dammi un bagliore di speranza dai ! :)

lbenaglia Profilo | Guru

>Ciao ! Purtroppo non ho a disposizione SQL 2008 e mi tocca arrangiarmi
>con quello che ho :( Quindi dici che una cosa del genere meglio
>che la lasci stare già subito in anticipo ???
Se devi loggare tutto, si.

>E se ad esempio
>trasferissi il dato invece che su una tabella in un file fisico
>o xml ????
Questa attività non deve essere a carico del DBMS, ma dovrai arrangiarti dal punto di vista applicativo.

>Non ci sono propio altre soluzioni per attuare una
>cosetta del genere ?? Sono rattristato dammi un bagliore di speranza
>dai ! :)
Esistono tools di terze parti ma che alla fine dei conti ti costano quanto il DBMS stesso:
http://www.lumigent.com/solutions/database-auditdb.html

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

plaguebreath Profilo | Junior Member

E visto che nel caso del 2005 express non mi costa nulla hai ben capito che la soluzione terze parti non fa per me. Cosa intendi se devo loggare propio tutto ? C'è un metodo alternativo altrimenti o più semplice ? Tipo loggare il nome della stored procedure chiamata e i suoi parametri ? In termini di spazio secondo te visto che la 2005 express ha il limite di 1 gb di spazio per il database dici che la tabella di log nel caso del trigger potrebbe arrivare a dimensioni importanti in fretta ? Per tutto mi interessano solo gli Insert Update e Delete, da quello che ho capito i select non si possono loggare e non mi interesserebbero neppure. Grazie mille per il supporto ;)

lbenaglia Profilo | Guru

>E visto che nel caso del 2005 express non mi costa nulla hai
>ben capito che la soluzione terze parti non fa per me.
Immaginavo

>Cosa intendi se devo loggare propio tutto ?
>C'è un metodo alternativo altrimenti o più semplice ?
>Tipo loggare il nome della stored procedure chiamata e i suoi parametri ?
Puoi loggare quello che ti pare

>In termini di spazio secondo te visto che la 2005 express ha il limite di 1 gb di spazio per
>il database dici che la tabella di log nel caso del trigger potrebbe
>arrivare a dimensioni importanti in fretta ?
La dimensione massima per db della Express Edition è di 4GB.
Non conoscendo minimamente il carico di lavoro che subirà la base dati e le policy di logging non sono in grado di rispondere alla domanda.

>Grazie mille per il supporto ;)
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

plaguebreath Profilo | Junior Member

Beh dimmi di che informazioni hai bisogno per fare un due conti così magari ti aiuto a farti l'idea un po' più chiara, non sono molte operazioni a dire il vero visto che saranno massimo 3 utenti che useranno l'applicazione contemporaneamente, il db adesso con circa un 5000 entry si attesta sui 45mb con una 80ina di stored divise per tabella e per operazione insert update delete.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5