Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    8

    [SQL Server] Tracciare tutte le operazioni di modifica ai dati

    Ciao ragazzi,
    ho un piccolo gestionale in access, condiviso in lan.
    Vorrei spostare tutte le tabelle su sqlserver e collegarle al file in access, utilizzando poi la trusted connection per l'autenticazione ( i pc sono sotto dominio windows). La mia domanda è la seguente:
    come posso monitorare tutte le modifiche effettuate sui dati ( insert, update e delete) tenendo traccia di chi le ha effettuate?
    Ho letto qualcosa relativa alla creazione di trigger. Potrebbe essere la stada corretta oppure esistono soluzioni migliori?
    Grazie a tutti!!!

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da morkioj Visualizza il messaggio
    ........ monitorare tutte le modifiche effettuate sui dati ( insert, update e delete)
    ......... chi le ha effettuate?
    ......... creazione di trigger.
    a me i trigger non piacciono,

    ma indipendentemente da questo il trigger è nel DB,
    mentre il LogIn si effettua nel client

    quindi in linea di massima il trigger non "sà" chi sia l'utente che sta lavorando

    Tu useresti tabelle collegate oppure per ogni modifica sui dati del DB faresti una query di comando (insert delete update) ???

    Facci sapere

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    8
    Buongiorno nman e grazie della risposta...
    Quote Originariamente inviata da nman Visualizza il messaggio
    a me i trigger non piacciono
    In effetti neanche a me. Anche perchè, correggimi se sbaglio andrei ad aumentare enormemente la dimensione del DB.

    Quote Originariamente inviata da nman Visualizza il messaggio
    mentre il LogIn si effettua nel client
    In rete ho trovato un esempio in cui viene letto l'utente che ha effettuato il login sul db. Questo è il link (riga 38 della seconda porzione di codice)
    http://tipsandtrickssqlserver.blogsp...modifiche.html

    Quote Originariamente inviata da nman Visualizza il messaggio
    Tu useresti tabelle collegate oppure per ogni modifica sui dati del DB faresti una query di comando (insert delete update) ???
    La maggior parte delle tabelle saranno collegate ma, ove possibile eseguirò direttamente le query tramite vba

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da morkioj Visualizza il messaggio
    ..... andrei ad aumentare enormemente la dimensione del DB. .....
    - La dimensione della struttura del DB direi di no, perché poi sara solo qualche trigger
    - La dimensione dei dati, certamente si perché ogni transazione dovra essere memorizzata anche nella tabella del log storico
    - Il tempo per ogni transazione aumentera per scrivere anche nello storico
    Ma questo dipende non tanto dal trigger in se stesso bensi dal fatto che devi tenere una doppia registrazione di quanto avviene

    Quote Originariamente inviata da morkioj Visualizza il messaggio
    In rete ho trovato un esempio in cui viene letto l'utente che ha effettuato il login sul db. Questo è il link (riga 38 della seconda porzione di codice)
    http://tipsandtrickssqlserver.blogsp...modifiche.html
    Ma quelli sono gli utenti di SQLServer
    immagino che i tuoi utenti invece siano elencati in una tabella con i loro nomi propri ???

    ma potrei sbagliarmi perché tu hai detto che usi la connessione trusted
    quindi potresti trovare traccia dell'utente logato nel dominio di Windows

    Potrebbe avere un senso


    Quote Originariamente inviata da morkioj Visualizza il messaggio
    ...... La maggior parte delle tabelle saranno collegate ma, ove possibile eseguirò direttamente le query tramite vba
    Se le tabelle collegate le fai rigorosamente in sola lettura
    rimandando tutte le operazioni di scrittura (e cancellazioni) a delle query di comando
    allora scrivendo la applicazione ti basta per ogni query di comando scrivere una query di comando bis
    che registra nella tabella del log storico anche data ora utente e operazione svolta con i dettagli che preferisci

    Poi le 2 query di comando dovrebbero essere "avvolte" in una transazione
    in modo che non si possa verificare per esempio il fallimento della seconda
    se la prima è gia stata eseguita


    Certo, la applicazione diventa più complessa, ma pero ti semplifichi il DB

    .
    Ultima modifica di nman; 06-04-2017 a 09:45

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    8
    Quote Originariamente inviata da nman Visualizza il messaggio
    quindi potresti trovare traccia dell'utente logato nel dominio di Windows
    Proprio così! Utilizzerei l'utente di dominio.
    Quote Originariamente inviata da nman Visualizza il messaggio
    Se le tabelle collegate le fai rigorosamente in sola lettura
    Purtroppo no! Chi gestiva il file .accdb fino ad oggi, ha sempre utilizzato maschere che scrivevano (tramite le query di access) in tabella. Quindi una buona parte di queste tabelle collegate dovranno essere anche in scrittura.
    In generale comunque, mi sembra di capire che sqlserver non implementi qualche "sistema di log" ( almeno nella versione express) in cui vengano memorizzate tutte le query eseguite su di esso. Sbaglio?
    Grazie ancora del tempo e dell'attenzione che mi stai dedicando NMAN

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da morkioj Visualizza il messaggio
    ....... mi sembra di capire che sqlserver non implementi qualche "sistema di log" ( almeno nella versione express) in cui vengano memorizzate tutte le query eseguite su di esso. .......
    Qui ci vuole qualcuno che ne sappia piu di me

    In effetti SQLServer (anche nella versione Express) è composto di default da almeno da 2 file:
    .mdf
    .ldf
    Il secondo è chiamato anche file di log

    Per sentito dire ogni transazione vene fatta innanzitutto sul .ldf
    e solamente se terminata con successo viene trasferita dal .ldf al .mdf
    ----- ditemi se sto scrivendo caz...ate

    il file di .ldf ha delle sue regole di svuotamento che dipendono anche dal BackUp
    in modo da contenere temporaneamente le modifiche intervenute

    Leggere il file di .ldf dovrebbe essere possibile ma io non so assolutamente come fare
    e non so se troveresti dentro quello che ti serve


    qui mi fermo (penso di avere già detto troppo rispetto a quello che so)

    .

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    8
    Grazie mille nman

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.