Какой встроенный механизм SQL Server должен выполнять Flashback Queries? - PullRequest
6 голосов
/ 11 августа 2009

Думаешь, этим все сказано?

Ответы [ 6 ]

5 голосов
/ 11 августа 2009

Отсутствует. SQL Server не имеет эквивалентной функции.


ОБНОВЛЕНИЕ : Начиная с SQL Server 2016 эта информация устарела. Смотрите комментарии и ответы ниже.

2 голосов
/ 27 февраля 2018

Я знаю, что этот вопрос довольно старый, но с SQL Server 2016 , Temporal Tables - это особенность: https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables

Может быть, это может помочь другим, если они зайдут в эту тему (Поиск чего-то похожего на функцию Oracle Flashback)

С включенными временными таблицами вы можете запросить таблицу AS OF определенной временной отметки и извлечь строки, как они были в этой конкретной временной отметке, точно так же, как вы использовали в Oracle:

(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/

2 голосов
/ 28 октября 2013

В SQL Server 2008 вы можете использовать Change Data Capture, с помощью этой функции вы можете сделать намного больше, чем oracle flash back. (Существует процедура хранилища для возврата базы данных на SQL Server 2008, если вы хотите, я могу предоставить это для вас)

2 голосов
/ 11 августа 2009

Ближайший эквивалент, вероятно, Снимки базы данных . Вы можете создать моментальный снимок базы данных в нужный момент, а затем составить отчет по этому снимку. В отличие от воспоминаний, моменты, в которые делаются снимки SQL Server, должны быть заранее определены.

0 голосов
/ 27 февраля 2018

SQL Server 2016 представил временные таблицы или таблицы истории , которые позволяют разработчикам запрашивать данные, хранящиеся в таблице базы данных в прошлом.

Я имею в виду, что разработчики могут предоставлять приложения, которые позволяют пользователям отображать исторические данные таблицы или представление таблицы в определенное время в прошлом

0 голосов
/ 22 февраля 2018

Да, мы можем использовать Сбор данных изменений и Отслеживание изменений особенности, встроенные в механизмы SQL Server и очень многое похож на Flashback в Oracle.

Когда вы применяете функции Change Data Capture к таблице базы данных, создается зеркало отслеживаемой таблицы с той же структурой столбцов исходной таблицы, но с дополнительными столбцами, которые включают метаданные, используемые для обобщения характера изменений в строка таблицы базы данных. Администратор SQL Server может затем легко отслеживать активность для зарегистрированной таблицы, используя эти новые таблицы аудита.

Отслеживание изменений - это облегченное решение, которое обеспечивает эффективный механизм отслеживания изменений для приложений. Как правило, чтобы приложения могли запрашивать изменения данных в базе данных и получать доступ к информации, связанной с изменениями, разработчикам приложений приходилось реализовывать собственные механизмы отслеживания изменений. Создание этих механизмов обычно занимало много времени и часто требовало использования комбинации триггеров, столбцов меток времени, новых таблиц для хранения информации об отслеживании и пользовательских процессов очистки.

Различные типы приложений предъявляют различные требования к объему необходимой им информации об изменениях. Приложения могут использовать отслеживание изменений, чтобы ответить на следующие вопросы об изменениях, внесенных в пользовательскую таблицу:

Какие строки изменились для пользовательской таблицы?

Требуется только то, что строка изменилась, а не сколько раз она изменилась или значения каких-либо промежуточных изменений.

Самые последние данные можно получить непосредственно из отслеживаемой таблицы.

Изменилась ли строка?

Тот факт, что строка изменилась, и информация об изменении должна быть доступна и записана в момент внесения изменения в той же транзакции.

Для получения дополнительной информации о том, как использовать сбор данных изменений (CDC) и отслеживание изменений в SQL Server; пожалуйста, проверьте Пинал Дейв пост .

enter image description here

Отслеживание изменений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...