Domanda

Quindi abbiamo iniziato a esplorare utilizzando la cattura dei dati di cambiamento su uno dei nostri database di produzione. Vorremmo conoscere il datatime di ogni cambiamento. Leggere attraverso Walkthrough's e tutorial ecc. Sembra che l'approccio standard sia utilizzare l'LSN per relazionarsi con cdc.lsn_time_mapping Tabella di sistema. Questo approccio funziona ma non è molto semplice né performante quando si parla di centinaia di migliaia di cambiamenti al giorno.

In un ambiente di test ho effettuato la seguente regolazione alle tabelle di modifica. Ho emesso un ALTER TABLE istruzione per aggiungere una colonna alla fine chiamata [__ChangeDateTime] e ha reso il suo valore predefinito GetDate(). L'approccio sembra funzionare, il monitoraggio del cambiamento funziona ancora normalmente, i DateTime vengono catturati. Ma il moccioso con i tavoli del sistema mi rende un po 'nervoso.

Se questo non è un campo di sistema che Microsoft ha aggiunto dall'inizio Devono avere le loro ragioni. Dato che invece hanno optato per l'LSN su CDC.LSN_Time_Mapping Approccio mi sto preparando per problemi creando il mio hack in questo modo?

AGGIORNARE:

Scoperto durante i test che a volte getDate () non è abbastanza preciso per le nostre esigenze: cambiamenti multipli che condividono lo stesso tempo. Consiglia di usare sysdatetime () e datetime2 Per spostare il valore verso il nanosecondo. Opzione per il 2008+ solo ovviamente.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top