2009-08-10 46 views

回答

5

無。 SQL Server沒有一個等效的功能。

+0

現在它擁有MVCC,它真的令人驚訝。 – 2010-10-18 21:20:05

2

最接近的等價物可能是Database Snapshots。您可以在感興趣的時刻創建數據庫快照,然後根據快照進行報告。與閃回不同,SQL Server快照的拍攝時刻必須預先確定。

2

在SQL Server 2008上,您可以使用更改數據捕獲功能,通過此功能,您可以完成比Oracle閃回更多的功能。 (有一個存儲過程來還原SQL Server 2008上的數據庫,如果你想我可以提供給你)

0

是的,我們可以用Change Data CaptureChange Tracking 功能被內置在機制,SQL Server和非常 類似於Oracle中的Flashback。

當您在數據庫表上應用更改數據捕獲功能時,將使用原始表的相同列結構創建跟蹤表的鏡像,但使用包含元數據的附加列用於總結數據庫錶行中的更改。然後,SQL Server DBA可以使用這些新的審計表輕鬆地監視記錄表的活動。

更改跟蹤是一款輕量級解決方案,爲應用程序提供了一種高效的更改跟蹤機制。通常,爲了使應用程序能夠查詢數據庫中數據的更改以及訪問與更改相關的信息,應用程序開發人員必須實施自定義更改跟蹤機制。創建這些機制通常涉及很多工作,並且經常涉及使用觸發器,時間戳列,用於存儲跟蹤信息的新表以及自定義清理過程的組合。

不同類型的應用程序對它們需要的變化有多少信息有不同的要求。應用程序可以使用更改跟蹤來回答有關對用戶表進行的更改的以下問題:

用戶表的哪些行已更改?

只需要一行已更改的事實,而不是行已更改的次數或任何中間更改的值。

最新的數據可以直接從被跟蹤的表格中獲得。

已更改行嗎?

在同一個事務中進行更改時,行已更改並且有關更改的信息必須可用並記錄。

有關如何在SQL Server中使用更改數據捕獲(CDC)和更改跟蹤的更多信息;請查看Pinal Dave's Post

enter image description here

Change Tracking

1

我知道這個問題是很老,但的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之後,歷史表將顯示在您啓用版本在桌下:

enter image description here

從表中刪除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/