2009-08-10 25 views

Trả lời

5

Không có. SQL Server không có tính năng tương đương.

+0

Bây giờ nó có MVCC nó thực sự đáng ngạc nhiên rằng nó không. –

2

Tương đương gần nhất có thể là Database Snapshots. Bạn có thể tạo ảnh chụp nhanh cơ sở dữ liệu tại thời điểm quan tâm và sau đó báo cáo về ảnh chụp nhanh. Không giống như hồi tưởng, những khoảnh khắc mà tại đó các ảnh chụp nhanh SQL Server được chụp phải được xác định trước.

2

Trên máy chủ SQL 2008, bạn có thể sử dụng Thay đổi dữ liệu chụp, bằng tính năng này bạn có thể làm nhiều hơn so với đèn flash ngược lại. (Có một thủ tục lưu trữ để phục hồi cơ sở dữ liệu trên SQL server 2008 nếu bạn muốn tôi có thể cung cấp điều đó cho bạn)

0

Có, chúng tôi có thể sử dụng Change Data CaptureChange Tracking tính năng được xây dựng trong cơ chế trong SQL Server và rất nhiều tương tự như Flashback trong Oracle.

Khi bạn áp dụng tính năng Thay đổi dữ liệu thay đổi trên bảng cơ sở dữ liệu, gương của bảng được theo dõi được tạo với cùng cấu trúc cột của bảng ban đầu, nhưng có thêm các cột bao gồm siêu dữ liệu được sử dụng để tóm tắt bản chất sự thay đổi trong hàng của bảng cơ sở dữ liệu. Sau đó, SQL Server DBA có thể dễ dàng theo dõi hoạt động cho bảng đã ghi bằng cách sử dụng các bảng kiểm tra mới này.

Thay đổi theo dõi là giải pháp gọn nhẹ cung cấp cơ chế theo dõi thay đổi hiệu quả cho ứng dụng. Thông thường, để cho phép ứng dụng truy vấn các thay đổi đối với dữ liệu trong cơ sở dữ liệu và thông tin truy cập có liên quan đến các thay đổi, nhà phát triển ứng dụng phải triển khai cơ chế theo dõi thay đổi tùy chỉnh. Tạo các cơ chế này thường liên quan đến rất nhiều công việc và thường xuyên tham gia bằng cách sử dụng kết hợp các trình kích hoạt, cột dấu thời gian, bảng mới để lưu trữ thông tin theo dõi và các quy trình dọn dẹp tùy chỉnh.

Các loại ứng dụng khác nhau có các yêu cầu khác nhau về lượng thông tin cần thiết về thay đổi. Ứng dụng có thể sử dụng theo dõi thay đổi để trả lời các câu hỏi sau về các thay đổi đã được thực hiện cho bảng người dùng:

Hàng nào đã thay đổi cho bảng người dùng?

Chỉ thực tế là một hàng đã thay đổi là bắt buộc, không bao nhiêu lần hàng đã thay đổi hoặc giá trị của bất kỳ thay đổi trung gian nào.

Dữ liệu mới nhất có thể lấy trực tiếp từ bảng đang được theo dõi.

Hàng đã thay đổi chưa?

Thực tế là một hàng đã thay đổi và thông tin về thay đổi phải có sẵn và được ghi lại tại thời điểm thay đổi được thực hiện trong cùng một giao dịch.

Để biết thêm thông tin về cách sử dụng Thay đổi thu thập dữ liệu (CDC) và theo dõi thay đổi trong SQL Server; hãy xem Pinal Dave's Post.

enter image description here

Change Tracking

1

Tôi biết câu hỏi này là khá cũ, nhưng với SQL Server 2016, Bàn Temporal là một tính năng: https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables

Có lẽ nó có thể giúp đỡ người khác trong trường hợp họ đến chủ đề này (Tìm kiếm một cái gì đó tương tự như tính năng Oracle Flashback)

Với tem bảng poral kích hoạt, bạn có thể truy vấn bảng AS CÁC một dấu thời gian cụ thể và lấy hàng như họ đã ở chỗ dấu thời gian cụ thể, giống như bạn đang sử dụng để làm trong Oracle:

(SELECT * FROM EMPLOYEE AS OF TIMESTAMP ('13-SEP-04 8:50:58','DD-MON-YY HH24: MI: SS') 

truy vấn tương đương trong SQL Server cho một bảng với SYSTEM_VERSIONING = ON sẽ là:

SELECT * FROM EMPLOYEE FOR SYSTEM_TIME AS OF '2004-09-01 08:50:58' 

để kích hoạt SYSTEM_VERSIONING cho một bảng hiện có với hàng bạn có thể sử dụng đoạn mã sau:

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); 

Sau khi kích hoạt SYSTEM_VERSIONING, bảng Lịch sử sẽ hiển thị bên dưới chiếc bàn nơi bạn kích hoạt phiên bản:

enter image description here

để Hủy bỏ SYSTEM_VERSIONING từ một bảng:

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]; 

Để biết thêm thông bạn có thể truy cập liên kết sau (hoặc tài liệu chính thức của Microsoft được tham chiếu trước đây): http://www.sqlservercentral.com/articles/SQL+Server+2016/147087/

0

SQL Server 2016 giới thiệu temporal tables aka history tables cho phép nhà phát triển truy vấn dữ liệu được lưu trữ trong bảng cơ sở dữ liệu trong quá khứ.

Ý tôi là các nhà phát triển có thể cung cấp các ứng dụng cho phép người dùng để hiển thị dữ liệu lịch sử của một bảng, hoặc quan điểm của một bảng tại một thời điểm nào đó trong quá khứ

Các vấn đề liên quan