У меня есть требование принять «моментальный снимок» текущей базы данных и клонировать его в ту же базу данных с новыми Первичными ключами.Как скопировать большой набор данных в SQLServer db
Рассматриваемая схема состоит из примерно 10 таблиц, но некоторые из таблиц могут содержать от сотни тысяч до 1 миллиона записей, которые необходимо дублировать.
Какие у меня варианты?
Я боюсь, что для написания SPROC потребуется блокировка строк в базе данных (для параллелизма) на весь период действия, что очень раздражает других пользователей. Как долго будет проводиться такая операция, предполагая, что мы можем оптимизировать ее в полной мере, что позволяет sqlserver? Это будет 30 секунд до 1 минуты, чтобы выполнить это много вставок? Я не могу заблокировать всю таблицу (ы) и сделать объемную вставку, потому что есть другие пользователи под другими учетными записями, которые используют одни и те же таблицы независимо.
В зависимости от ожиданий производительности альтернативой было бы сбросить текущий db в файл xml и затем асинхронно клонировать db из этого xml-файла на досуге в фоновом режиме. Очевидным преимуществом этого является то, что db блокируется только на время, необходимое для создания дампа xml, и вставки могут работать в фоновом режиме.
Если хороший администратор базы данных может получить операцию «клон», чтобы выполнить старт до конца менее чем за 10 секунд, то, вероятно, не стоит сложность решения xmldump/webservice. Но если это потерянная причина, и вставить потенциально миллионы строк, вероятно, выйдет вовремя, то я предпочел бы начать с подхода xml сразу.
Или, может быть, есть совершенно лучший подход вообще?
Большое спасибо за любые идеи, которые вы можете предоставить.
Какой версии (2000 , 2005, 2008) и edtion (express, workgroup, standard, enterprise) сервера Sql вы используете? – chadhoc
Требуется ли «с новыми первичными ключами»? –
новые первичные ключи являются требованием, в том смысле, что они должны быть дублированными записями, которые затем будут связаны как другая «версия» этих данных. Я использую SQL Server 2005 стандартного издания – Scott