конец
Не самый эффективный, но он будет работать и должен позволить вам сохранить транзакцию войти вниз. Если вам это нужно также убедитесь, что использовать не блокировки ключевое слово, так что вы не блокировать другие транзакции при выполнении этого большого хода (если вы используете BCP или DTS, поскольку они гораздо быстрее).
Некоторые из того, что было сказано, вероятно, ваш лучший выбор, хотя. Используйте BCP, DTS или другой объемный инструмент. Если вы можете упасть индексы, это сделает вещи идти намного быстрее.
набор @stop (выберите кол (primaryKey) из таблицыНамея, где primaryKey не в destinstiontable)
в то время как (@stop выбрать (...) из sourcetable, где primaryKey не в (выберите primarykey от destinationtable)
коммит
набор @stop (выбрать счет (primaryKey) из tableName, где primaryKey не в destinstiontable) начать транзакцию
вставить в пункт назначенияТебле (...)
Еще один способ, который мы использовали в прошлом, чтобы создать температуру таблицу с основными ключами мы хотим двигаться и использовать в то время как цикл. Таким образом, вы можете сделать это в своего рода блок моды, чтобы избежать крупных транзакций накладных расходов, если вы отменили, и он должен был откатить.
В основном то, что вы в конечном итоге делает это вставка в таблицу (...) выберите (...) выбрать (...) из названия таблицы, где основной ключ в (выбрать верхний 10000 ключ от соблазняемого)
топ 10000 вы хотите в вторичном наборе результатов, чтобы вы могли удалить их из таблицы темп, чтобы они не обрабатываются снова.
Еще один способ будет использовать курсоры, чтобы уменьшить количество записей, которые вы обрабатываете за один раз.
Другой метод цикла было бы сделать что-то вроде этого в то время как цикл.
объявить @stop как int