Newsgroup: it.comp.appl.access
Titolo: gestione tabella log e prestazioni DB in rete lan

volendo salvare ogni evento generato da un operatore ad esempio ogni volta che clicca su qualche pulsante, secondo voi usato in rete il DB si appesantisce dovendo fare quell'operazione in più?
 
inoltre mi dovrò aspettare problemi futuri quando quella tabella log sarà riempita da moltissimi record?
 
Grazie.


con db sql server io tengo il log in apposita tabella registrando:
data e ora
postazione client
nome utente
operazione eseguita
 
 
di solito registro le cancellazioni totali e righe fattura, modifica 
della stessa
 
di tutte le modifiche e cancellazioni nel comparto prima_nota/partita doppia
 
in alcuni casi anche dei ddt e in generale in tutte le parti "sensibili" 
di un gestionale.
più volte mi è servito per controbattere al cliente che sparava il 
solito "io non ho toccato nulla in quel documento"
 
non appesantisce nulla essendo dei semplici insert gestiti tramite 
stored procedure...quindi lato server
e la tabella viene interrogato solo al bisogno/contestazione
 
in generale tengo i log degli ultimi 365 giorni
 
se usi access come BE non ti so dire le ripercussioni nelle 
prestazioni...non lo uso da 20anni come BE
 
 
BFS
 
 
 
 

 
 
Gia' pure a me e' capitato alcune volte che avere i log di alcune 
operazioni sia stato essenziale per 'dimostrare' che non era stato il 
gestionale a mangiarsi i dati ma un operatore a farlo, e risalire a 
operatore/postazione/data/ora/operazione ha permesso di capire che siano 
state 'manovre' eseguite dal personale e non bug dei programmi
Il punto fondamentale e' stabilire per quali operazioni e con che 
dettaglio memorizzare i log, per evitare di appesantire troppo il 
normale flusso del programma (loggare ogni movimento vorrebbe dire che 
si sta sempre a scrivere sul db)
 
Sarebbe interessante valutare l'impatto in termini di prestazioni che 
potrebbe avere tenere un log generico di TUTTE le operazioni eseguite
Parlo di trigger sul db da avviare in automatico in caso di 
insert/modify/delete per OGNI tabella, informazioni che verrebbero 
scritte su log_db (l'unica del db senza log ovviamente)
Da filtrare ed utilizzare poi in caso di necessita'
 


e di mettere un accdb con BE con una sola tabella LOG localmente ad ogni PC cosa ne pensate?
in questo modo il traffico rete inutile per la tabella log è azzerato, la scrittura più veloce
 
lo svantaggio è che se cerco qualche evento devo controllare tutti i log di tutti i client
oppure potrei accodare tutto su tabella log in rete ma una volta al mese
 
cosa ne pensate?
 
 


secondo me dipende tutto dallo scenario della tua applicazione
 
se usi "access" come BE presumo che la tua applicazione non gestisca 
centinaia di insert/delete/update all'ora per singolo client da dover 
monitorare, con 30-40-50 client
 
se parliamo del classico ufficio di 10 pc con 10 registrazioni l'ora per 
pc userei una tabella log nel BE e stop
 
tanto la devi alimentare con un banale insert con 3 campi in croce, a 
meno che non scrivi la divina commedia in ogni singolo log, la rete non 
ne risente minimamente a mio avviso.
Poi magari chi usa mdb/accdb come BE potrà darti maggiori info sulle 
prestazioni, come scrivevo io non lo uso da una vita...
 
BFS
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Il 02/09/2022 08:29, mario rossi ha scritto:

Traffico rete aggiuntivo non c'e', perche' la tabella log verrebbe 
alimentata dal codice all'interno del db server, non sono le postazioni 
di lavoro a scrivere nuove righe ma i trigger/stored procedure dentro al 
db server ad occuparsi di tutto, lato client non e'necessario cambiare 
niente neanche se ne accorgono
 
C'e' traffico rete, ovviamente quando da postazione lavoro si lancia 
un'interrogazione sulla tabella log, ma questo credo sarebbe 
un'operazione saltuaria e quindi ampiamente sopportabile
 
Il fatto di avere i dati frammentati un po' qua ed un po' la' (ogni 
postazione lavoro col suo file di log) impedisce di eseguire ricerche 
globali, e questo a mio parere e' inaccettabile
 
 

 niente neanche se ne accorgono
 
 
se non ho capito male lui non usa sqlserver come BE
 
io cmq eseguo l'inserimento dai client perchè informazioni come nome 
nome PC e nome utente li posso ricavare solo da li.
Oppure c'è il modo tramite trigger di risalire a ip/user di chi l'ha 
innescato?
 
BFS
 


esatto uso BE access comunque si sono 10 pc e scrivo 3 campi allora lascio la tabella log in rete

 esatto uso BE access comunque si sono 10 pc e scrivo 3 campi allora lascio la tabella log in rete
 
10 pc ... in rete LAN o RDP?
 
Saluti


lan

 lan
 
Prestazioni ridotte a parte, è una configurazione che causa periodici danneggiamenti del DB condiviso; se non t'è ancora capitato è un miracolo.
Ammesso che tu non voglia upgradare la base dati a SQLSVR, potresti riconfigurare il sistema per l'accesso RDP: con qualche accorgimento avresti affidabilità e buone prestazioni.
E potresti gestire una Tabella Log condivisa senza vistosi degradi.
 
Saluti