Pensa che questo dica tutto?Che meccanismo incorporato fa SQL Server per eseguire query Flashback?
risposta
Nessuno. SQL Server non ha una funzione equivalente.
Ora che ha MVCC è davvero sorprendente che non sia così. –
L'equivalente più vicino è probabilmente Database Snapshots. È possibile creare un'istantanea del database al momento dell'interesse e quindi creare report sullo snapshot. A differenza dei flashback, i momenti in cui vengono eseguite le istantanee di SQL Server devono essere predeterminati.
Su SQL server 2008 è possibile utilizzare Change Data Capture, grazie a questa funzione è possibile eseguire molto più di un oracle flashback. (C'è una procedura negozio per ripristinare il database sul server SQL 2008 se si desidera che posso prevedere che per voi)
Sì, possiamo usare Change Data Capture e Change Tracking caratteristiche che sono costruiti in meccanismi in SQL Server e molto simile a Flashback in Oracle.
Quando si applica funzioni Change Data Capture su una tabella di database, si crea uno specchio della tabella rilevata con la stessa struttura colonna della tabella originale, ma con colonne aggiuntive che includono i metadati utilizzato per riassumere la natura del la modifica nella riga della tabella del database. Il DBA di SQL Server può quindi monitorare facilmente l'attività per la tabella registrata utilizzando queste nuove tabelle di controllo.
Il rilevamento delle modifiche è una soluzione leggera che fornisce un meccanismo di tracciamento delle modifiche efficiente per le applicazioni. In genere, per consentire alle applicazioni di richiedere modifiche ai dati in un database e accedere alle informazioni correlate alle modifiche, gli sviluppatori delle applicazioni hanno dovuto implementare meccanismi personalizzati di tracciamento delle modifiche. La creazione di questi meccanismi di solito comportava molto lavoro e spesso comportava l'utilizzo di una combinazione di trigger, colonne di timestamp, nuove tabelle per archiviare informazioni di tracciamento e processi di pulizia personalizzati.
Diversi tipi di applicazioni hanno requisiti diversi per la quantità di informazioni necessarie sulle modifiche. Le applicazioni possono utilizzare il rilevamento delle modifiche per rispondere alle seguenti domande sulle modifiche apportate a una tabella utente:
Quali righe sono state modificate per una tabella utente?
Solo il fatto che una riga sia stata modificata è necessaria, non quante volte la riga è stata modificata oi valori di eventuali modifiche intermedie.
Gli ultimi dati possono essere ottenuti direttamente dalla tabella che viene monitorata.
È stata modificata una riga?
Il fatto che una riga sia cambiata e le informazioni sulla modifica devono essere disponibili e registrate nel momento in cui la modifica è stata effettuata nella stessa transazione.
Per ulteriori informazioni su come utilizzare Change Data Capture (CDC) e Change Tracking in SQL Server; Si prega di controllare Pinal Dave's Post.
So che questa domanda è abbastanza vecchio, ma con SQL Server 2016, Tavoli temporale è una caratteristica: https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables
forse può aiutare gli altri nel caso in cui vieni a questo argomento (Ricerca di qualcosa di simile alla funzione Oracle Flashback)
Con tavoli poral abilitati, è possibile interrogare tabella a partire da una data e ora specifica e recuperare le righe come lo erano in quella specifica data e ora, proprio come si erano abituati a fare in Oracle:
(SELECT * FROM EMPLOYEE AS OF TIMESTAMP ('13-SEP-04 8:50:58','DD-MON-YY HH24: MI: SS')
interrogazione equivalente in SQL Server per una tabella con SYSTEM_VERSIONING = ON sarà:
SELECT * FROM EMPLOYEE FOR SYSTEM_TIME AS OF '2004-09-01 08:50:58'
per abilitare SYSTEM_VERSIONING per una tabella esistente con le righe è possibile utilizzare il seguente script:
ALTER TABLE [dbo].[TABLE] ADD [SysStartTime] datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysStartTime DEFAULT '1900-01-01 00:00:00', [SysEndTime] datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysEndTime DEFAULT '9999-12-31 23:59:59', PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = ON);
Dopo aver abilitato SYSTEM_VERSIONING, la tabella di storia mostrerà sotto il tavolo in cui è attivato il controllo delle versioni:
Per rimuovere SYSTEM_VERSIONING da una tabella:
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [dbo].[TABLE] DROP PERIOD FOR SYSTEM_TIME;
ALTER TABLE [dbo].[TABLE] DROP COLUMN [SysStartTime], [SysEndTime];
Per maggiori informazioni si può visitare il seguente link (o documentazione ufficiale Microsoft di riferimento prima): http://www.sqlservercentral.com/articles/SQL+Server+2016/147087/
SQL Server 2016 ha introdotto temporal tables aka history tables che consente agli sviluppatori di eseguire query sui dati memorizzati in una tabella di database in passato.
intendo gli sviluppatori possono fornire applicazioni che consente agli utenti di visualizzare i dati storici di una tabella, o la visualizzazione di una tabella ad un certo momento nel passato
- 1. Che cosa fa SQL Server con una richiesta scaduta?
- 2. Esempio server collegato a SQL Server Query
- 3. Quando andare per le stored procedure, piuttosto che SQL incorporato
- 4. SQL dinamico incorporato nella query di selezione
- 5. SQL Sql Server 2008 Cross Tab Query
- 6. Query SQL Server per trovare indici cluster
- 7. Analogico incorporato di CouchDB, come sqlite per SQL Server
- 8. Query equivalente in sql server per INFORMATION_SCHEMA
- 9. Query che utilizzano i caratteri jolly LIKE nel server sql
- 10. Come eseguire questa query sql?
- 11. SQL Server query improvvisamente lento
- 12. query SQL eseguire con PreparedStatement
- 13. Query ricorsiva di SQL Server
- 14. Totali mensili query SQL Server
- 15. SQL Server Query - GroupWise moltiplicazione
- 16. Semplificazione della query SQL Server
- 17. Le query che i join SQL impliciti non possono eseguire?
- 18. SQL Server errore di query
- 19. Cosa fa questa query SQL? Spiegare
- 20. Query su più database (server SQL)
- 21. Codeigniter: fa $ this-> db-> last_query(); eseguire una query?
- 22. Eseguire sqlcmd senza aver installato SQL Server
- 23. Server Java incorporato o non incorporato
- 24. Cosa fa OBJECT_ID in SQL Server?
- 25. bash FreeTDS: esecuzione di query SQL in server Microsoft SQL
- 26. Server FTP incorporato con C#?
- 27. SQL * Plus non esegue script SQL che SQL Developer fa
- 28. Si verifica un errore strano quando si utilizza wcf per eseguire query su server sql
- 29. Query server collegato a SQL Server esaurimento della memoria
- 30. Disabilita sessione su server http incorporato
Ora che SQL Server è MVCC dovrebbe essere tho banale, vero? –