Прямо сейчас я работаю над решением для архивирования старых данных из большой рабочей базы данных в отдельную архивную базу данных с той же схемой. Я перемещаю данные с помощью сценариев SQL и объектов управления SQL Server (SMO) из исполняемого файла .Net, написанного на C#.
Архивные данные должны быть доступными и даже (иногда) изменяемыми, мы просто хотим, чтобы они не мешали работе базы данных и работали быстро.
Перетаскивание больших объемов данных и управление отношениями между таблицами оказалось довольно сложной задачей.
Интересно, есть ли лучший способ архивировать данные с помощью SQL Server.
Есть идеи?


Я думаю, если вы все еще хотите / нуждаетесь в том, чтобы данные были доступны, то можно было бы разделить некоторые из ваших самых больших или наиболее часто используемых таблиц.
Да, используйте разделение таблиц и индексов с файловыми группами.
Вам даже не нужно изменять операторы select, только если вы хотите получить от результата последнюю биту скорости.
Другим вариантом может быть балансировка нагрузки с двумя серверами и двусторонняя репликация между ними.
Мы находимся в похожей ситуации. По нормативным причинам мы не можем удалять данные в течение определенного периода времени, но многие из наших таблиц становятся очень большими и громоздкими, и реально большая часть данных старше одного месяца может быть удалена с некоторыми повседневными проблемами.
В настоящее время мы программно сокращаем таблицы, используя настраиваемое комбинированное приложение .NET / оболочки с использованием BCP для резервного копирования файлов, которые можно заархивировать и оставить в недоступном сетевом ресурсе. Это не особенно доступно, но занимает меньше места. (Это усложняется тем, что нам нужно сохранять определенные исторические даты, а не иметь возможность усекать до определенного размера или с ключевыми полями в определенных диапазонах.)
Мы изучаем альтернативы, но, к моему удивлению, в этом обсуждении не так много лучших практик!