Я должен заархивировать большие блоки информации в SQL Server 2012 путем перемещения данных в новую таблицу, не блокируя других пользователей от использования исходной таблицы. Лучший способ состоит в том, чтобы сделать это использование инструкции циклов T-SQL или является там лучшим способом сделать это?
Как это сделать, как вы просите:
Создайте вторую таблицу, точно такую же, как и первую.
Найдите столбец - возможно, датированный? - -и используйте это, чтобы скопировать разумное количество данных во вторую таблицу. («Разумно» - это произвольное значение, зависящее от размера данных и количества времени, которое требуется.) Затем выполните второй запрос, чтобы удалить те же данные из первой таблицы. Имейте в виду, что второй запрос - это блокирующий запрос, то есть он не позволит никому использовать таблицу. Другими словами, проблема заключается во втором запросе, а не в первом.
В итоге я сделал следующее:
Это займет длиннее обычного удаления, но не блокируется.
Как я рекомендую это сделать:
Вот что я собираюсь начать делать:
(Фактически,Я собираюсь получить совершенно новую базу данных, но достаточно близко.)