2010-02-11 9 views
8

Abbiamo un database in esecuzione su un host condiviso tramite SQL Server 2008. Ora siamo nella posizione, a causa dei limiti prestazionali, in cui dobbiamo spostare il database, insieme a un sito web. Utilizziamo il rilevamento delle modifiche nel database in modo che i client possano eseguire la sincronizzazione utilizzando il framework di sincronizzazione.SQL Server 2008: dove viene archiviata la tabella di rilevamento delle modifiche?

La mia domanda è: la tabella di tracciabilità delle modifiche è memorizzata all'interno del database in un modo che significa che al momento del trasferimento rimarrà sul posto?

Attualmente sono in fase di apprendimento di SQL Server e i punti più sottili del rilevamento delle modifiche mi alludono ancora. Concettualmente, non capisco veramente dove sia la tabella di tracciabilità delle modifiche.

+0

Paragrafi per la vittoria: D –

+0

heh, grazie. Sono sicuro di averli inseriti ma vabbè! – Sergio

risposta

4

La tabella di commit è una tabella interna nascosta denominata sys.syscommittab a cui è possibile accedere direttamente solo dagli amministratori e memorizza una riga per ogni transazione per ogni modifica in una tabella che si trova in Change Tracking.

I dati correlati sono memorizzati in tabelle di sistema separate, create quando il rilevamento delle modifiche è abilitato su una tabella utente.

La tabella interna creata abilitando il rilevamento delle modifiche a livello di tabella è denominata sys.change_tracking_[object id], dove [ID oggetto] è l'ID oggetto per la tabella di destinazione.

+0

Grazie per la risposta. Dovrai perdonare la mia ignoranza ma con sys.syscommittab nascosto e interno significa che è separato dal database e non sarà incluso in nessun backup? Scenario di ipotesi peggiore, spostiamo il database e perdiamo le informazioni sul rilevamento delle modifiche. – Sergio

+0

@ Sergio: domanda interessante, non sono sicuro. Avrò uno scavo ... –

1

Da here sembra che il rilevamento delle modifiche sia una tabella generale nello stesso catalogo di database delle tabelle. Quindi ogni movimento che fai del database dovrebbe portare il tavolo dei cambiamenti con te.

Vorrei esaminare prima lo schema del database e utilizzare le pagine MSDN.

+0

@Hassan Syed: sfortunatamente, non credo sia corretto –

+0

Grazie per il link ai documenti. leggendo su di esso ora – Sergio

1

Deliberato se postare o meno questa risposta come generalmente non mi piace solo dare un collegamento, ma in questo caso volevo riassumere alcuni dei punti e quindi non andrebbe bene come commento!

This l'articolo vale una lettura che fornisce molti dettagli su come funziona il rilevamento delle modifiche e (e la modifica dell'acquisizione dei dati).

Per il rilevamento delle modifiche, è possibile trovare ciò che le tabelle interne vengono utilizzati per tenere traccia delle modifiche utilizzando:

SELECT [name] FROM sys.internal_tables 
    WHERE [internal_type_desc] = 'CHANGE_TRACKING'; 

La citazione importante è:

Il tavolo è quello che chiama una tabella interna , e non c'è il controllo sul suo nome o dove è memorizzato .

Problemi correlati