想一想這一切嗎?SQL Server必須做什麼內置的機制閃回查詢?
回答
無。 SQL Server沒有一個等效的功能。
現在它擁有MVCC,它真的令人驚訝。 – 2010-10-18 21:20:05
最接近的等價物可能是Database Snapshots。您可以在感興趣的時刻創建數據庫快照,然後根據快照進行報告。與閃回不同,SQL Server快照的拍攝時刻必須預先確定。
在SQL Server 2008上,您可以使用更改數據捕獲功能,通過此功能,您可以完成比Oracle閃回更多的功能。 (有一個存儲過程來還原SQL Server 2008上的數據庫,如果你想我可以提供給你)
是的,我們可以用Change Data Capture和Change Tracking 功能被內置在機制,SQL Server和非常 類似於Oracle中的Flashback。
當您在數據庫表上應用更改數據捕獲功能時,將使用原始表的相同列結構創建跟蹤表的鏡像,但使用包含元數據的附加列用於總結數據庫錶行中的更改。然後,SQL Server DBA可以使用這些新的審計表輕鬆地監視記錄表的活動。
更改跟蹤是一款輕量級解決方案,爲應用程序提供了一種高效的更改跟蹤機制。通常,爲了使應用程序能夠查詢數據庫中數據的更改以及訪問與更改相關的信息,應用程序開發人員必須實施自定義更改跟蹤機制。創建這些機制通常涉及很多工作,並且經常涉及使用觸發器,時間戳列,用於存儲跟蹤信息的新表以及自定義清理過程的組合。
不同類型的應用程序對它們需要的變化有多少信息有不同的要求。應用程序可以使用更改跟蹤來回答有關對用戶表進行的更改的以下問題:
用戶表的哪些行已更改?
只需要一行已更改的事實,而不是行已更改的次數或任何中間更改的值。
最新的數據可以直接從被跟蹤的表格中獲得。
已更改行嗎?
在同一個事務中進行更改時,行已更改並且有關更改的信息必須可用並記錄。
有關如何在SQL Server中使用更改數據捕獲(CDC)和更改跟蹤的更多信息;請查看Pinal Dave's Post。
我知道這個問題是很老,但的SQL Server 2016,時態表是一種功能: https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables
也許它可以幫助別人的情況下,他們來到這個話題(搜索類似於Oracle閃回功能的東西)
隨着電磁poral表啓用後,可以查詢表作爲一個特定的時間戳以及因爲他們在特定時間戳檢索行,就像你使用甲骨文的事:與表
(SELECT * FROM EMPLOYEE AS OF TIMESTAMP ('13-SEP-04 8:50:58','DD-MON-YY HH24: MI: SS')
在SQL Server等效查詢SYSTEM_VERSIONING = ON將是:
SELECT * FROM EMPLOYEE FOR SYSTEM_TIME AS OF '2004-09-01 08:50:58'
要啓用SYSTEM_VERSIONING現有表與行,你可以使用下面的腳本:
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);
使SYSTEM_VERSIONING之後,歷史表將顯示在您啓用版本在桌下:
從表中刪除SYSTEM_VERSIONING:
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];
欲瞭解更多信息,您可以訪問以下鏈接(或之前引用的官方Microsoft文檔): http://www.sqlservercentral.com/articles/SQL+Server+2016/147087/
SQL Server 2016引入了temporal tables aka history tables,它使開發人員能夠查詢過去存儲在數據庫表中的數據。
我的意思是開發者可以在過去
- 1. 查詢在SQL Server中返回的內容是什麼?
- 2. 爲什麼我必須爲SQL查詢轉換返回參數值?
- 3. 我爲SQL Server的這個子查詢做了什麼錯誤?
- 4. TDataset的某些內部方法必須做什麼?
- 5. 查詢機構必須與LINQ
- 6. 這個查詢在SQL Server中做了什麼?
- 7. 子查詢必須只返回一列
- 8. 在sql server中事務回滾的機制是什麼?
- 9. 這個SQL查詢做了什麼?
- 10. 這個SQL查詢會做什麼?
- 11. 爲什麼相機必須在OpenGL
- 12. 請幫幫我,怎麼做他的 - SQL查詢(SQL Server 2000中)
- 13. 爲什麼子查詢中的聚合必須再次聚合?
- 14. 爲什麼在SQL Server 2005中使用xml時必須設置ARITHABORT ON?
- 15. SQL查詢必須從ProductMaster返回行和其他2臺
- 16. 必須在SQL中轉義什麼?
- 17. 回滾SQL Server查詢
- 18. SQL Server查詢返回null
- 19. 爲什麼必須導入內部類?
- 20. 爲什麼我的HQL查詢返回「必須以select或from開頭」?
- 21. EDM模型生成的腳本必須做什麼?
- 22. 什麼是查詢執行到SQL Server 2005中的此查詢?
- 23. SQL Server:爲什麼這個查詢不返回NULL值?
- 24. 爲什麼我必須強制AutoPostBack =「true」?
- 25. 什麼是SQL查詢以返回SQL錯誤日誌配置?
- 26. ES多個必須查詢
- 27. 多應該必須查詢
- 28. 必須結合2查詢
- 29. 爲什麼我必須在mongoDB查詢中使用+
- 30. SQL查詢 - 一列必須是不同的,受限制的列必須是最近的
提供在某一時間的應用,使用戶能夠顯示錶的歷史數據,或表的視圖現在,SQL Server有MVCC這應該是微不足道的壽,對不對? – 2010-09-14 16:28:57