Domanda

Il database traccia tutte le modifiche tramite il meccanismo " Modifica cattura dati ".Devo aggiungere ulteriori informazioni sugli utenti che apportano queste modifiche. I seguenti utenti non sono utenti di SQL Server.L'autorizzazione alla sicurezza viene eseguita tramite un meccanismo esterno.

Voglio aggiungere una tabella dell helper con colonne " start_lsn " e " userid> / forte>" per associare una transazione con l'utente autorizzato. C'è un modo per determinare il valore " start_lsn ", che corrisponde alla transazione corrente eseguita nel codice dell'applicazione?

È stato utile?

Soluzione

Al momento, ho trovato la seguente soluzione:

1)

    .
  • Crea un'altra tabella (ad esempio, la "USUACTIVITY" ), che ha il "ID" e "ID utente" Colonne;

  • Utilizzare la colonna "ID" come chiave principale;

  • Abilita l'opzione CDC per questa tabella.

2)

    .
  • Avvolgere tutte le operazioni di modifica dei dati con uno scope di transazione ;

  • Aggiungi un nuovo record di dati in questa tabella con l'attuale "Userid" durante una determinata transazione:

      .
    • Begin esclusivo transazione;

    • esegue "manipolazione dei dati";

    • Inserisci informazioni su "Userid" nella tabella "USUACTIVITY" .

Poiché la transazione è esclusiva e tutte le operazioni sono state effettuate all'interno di un singolo ambito di transazione, il valore "Last_LSN" ( "Start_LSN" il valore "" è lo stesso. Dopodiché, utilizzando l'operatore Join, unire i dati dalla tabella "USERACTIVITY" con informazioni di manipolazione dei dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top