Долгое время мы хотели создать систему управления случаями, когда история никогда не теряется. Когда происходит изменение, мы хотим записать это изменение, но имеем возможность вернуться в любой момент времени и посмотреть, как выглядит запись. Я хотел задать этот вопрос в сообществе Stack Overflow, чтобы узнать, каковы некоторые способы сделать это, существует ли уже существующая технология для достижения этой цели?Способы ведения истории данных в базе данных SQL Server 2008
ответ
Да, эта технология определенно существует - это немного попытка реализовать ее и сделать это правильно.
Что вы ищете называется временных баз данных - см некоторые ресурсы:
Я не конечно, как временная база данных, как marc_s упоминалось работает, но если вы используете SQL Server 2008 или более поздней версии, вы можете воспользоваться помощью встроенного в Capture Data Change (CDC) функциональность:
- Change Data Capture (MSDN)
- Basics of Change Data Capture (MSDN)
- Using Change Data Capture
- Sql Server 2008: Change Data Capture (CDC)
Включение CDC использует журнал транзакций репликации для хранения вставки, обновления и удаления для table и создает табличные функции, которые позволяют извлекать строки с заданной даты/времени или извлекать только изменения.
Вы не можете полагаться только на CDC, потому что ваш журнал транзакций станет неуправляемым большим и медленным. Так что вы делаете:
- включить CDC,
- создать таблицу истории, используя ту же схему, как исходная таблица, но добавив еще пару колонок для хранения информации строки версии (так же, как slowly-changing dimension в реляционном базы данных OLAP), и
- создать работу, которая будет периодически опрашивают функции CDC для изменения с момента его последней загрузки и толкает их к столу истории
затем вы можете использовать таблицу истории в запросах, присоединившись к нему, как обычно, но с дополнительный предикат (ы), чтобы получить запись «как» любой даты, которую вы хотите.
- 1. Способы ведения выборочных данных в базе данных
- 2. Регистрация всех запросов в базе данных SQL Server 2008 Express?
- 3. Защита данных SQL Server 2008
- 4. Сохранение истории в SQL Server 2008?
- 5. Ведение истории изменений данных в базе данных
- 6. Как узнать отношения в базе данных в SQL Server 2008?
- 7. SQL Server 2008 хранилища данных
- 8. Сохранение истории изменений в поле XML в SQL Server 2008
- 9. Удаление дублирования строк в базе данных SQL Server 2008
- 10. Не удается назначить пользователя базе данных в SQL Server 2008
- 11. Хранение изображения в базе данных SQL Server 2008 R2
- 12. Выполнение поиска в базе данных SQL Server 2008
- 13. Планирование ежедневной задачи в базе данных SQL Server 2008
- 14. Репликация данных - SQL Server 2008
- 15. Pivoting данных - SQL Server 2008
- 16. Типы данных SQL Server 2008
- 17. Типы данных SQL Server 2008
- 18. Импорт данных Excel в SQL Server 2008
- 19. Удаление индексов в базе данных SQL Server
- 20. SQL Server 2008: запуск Xquery из значений в базе данных по значениям в базе данных
- 21. Обрезка значений в базе данных SQL Server
- 22. Как шифровать базу данных SQL Server 2008
- 23. ssis sql server 2008 для доступа к базе данных .mdb
- 24. Подключить Access 2007 к базе данных SQL Server 2008
- 25. SQL Server 2008 - Изменение прав доступа к базе данных
- 26. Обновление записей в базе данных SQL Server
- 27. Подключение к базе данных SQL Server 2008 от android (java)
- 28. SQL Server 2008 R2 - Подключение к локальной базе данных
- 29. Есть ли альтернатива базе данных Adventureworks для SQL Server 2008?
- 30. Как определить строку подключения к базе данных SQL Server 2008?
Это похоже на много дополнительных слоев для чего-то, что может вызвать триггер, чтобы заполнить ту же самую таблицу истории, о которой вы говорили. – Chris
Это правда; хотя, в зависимости от количества столбцов, это может потребовать много триггеров. В любом случае можно программировать программно, поэтому сложность не должна быть слишком большой проблемой. Оба метода имеют свои плюсы и минусы, и какой из них прав, во многом зависит от ваших требований. Вот хорошее обсуждение: http: // sqlserverplanet.com/design/triggers-service-broker-cdc-or-change-tracking/ – utexaspunk
Я использую отдельные таблицы + Триггеры для управления историей записи и двумя другими таблицами для записи, когда и кто внес изменения в какую запись. +1 для триггеров! – Achilles