Определить статус выполнения сценария T-Sql - PullRequest
0 голосов
/ 25 мая 2009

Я запускаю скрипт T-SQL для переноса старых данных в нашу новую БД. Это займет много времени, чтобы обработать! Сейчас более 2 с половиной часов. Есть ли способ проверить состояние исполняемого скрипта?

Ответы [ 4 ]

1 голос
/ 25 мая 2009

вы можете просто непрерывно запускать «select count (*) from table_being_populated» в новой базе данных и сравнивать его с количеством в старой БД и наблюдать за его ростом по мере выполнения сценария, чтобы получить представление о том, сколько данных в настоящее время в новой БД.

0 голосов
/ 26 мая 2009

Вы не перемещаете данные, это что-то вроде курсора? Если вы перемещаете одну запись за раз, это может занять несколько дней или месяцев, даже в зависимости от объема данных. Теперь, если у вас есть много данных для перемещения, вы можете захотеть цикл, но все же не одну запись на курсор времени, а цикл, который обрабатывает пакет записей. Часто быстрее вставить миллион записей, по 1000 за раз, чем все миллионы за раз.

Если все в настоящее время находится в одной транзакции, у вас также могут возникнуть проблемы, если вам нужно остановить и переосмыслить этот процесс long_running, так как он должен будет откатить все. Это может занять много времени.

Так как вы не настроили это с ведением журнала или каким-либо другим способом для отслеживания прогресса, я думаю, что предложение контролировать количество (*) в таблицах, в которые вы вставляете, является хорошим (и может быть, вы только реальный выбор). Просто убедитесь, что вы не используете блокировку, иначе результаты могут не вернуться, пока вставка не будет завершена. Также проверьте, не происходит ли блокировка, часто, когда что-то подобное занимает слишком много времени, другой процесс блокирует его.

0 голосов
/ 25 мая 2009
RAISERROR ('marker', 10, 1) WITH NOWAIT

Это обеспечивает немедленную обратную связь с клиентом: печать не может. Серьезность 10 также означает, что это предупреждение, поэтому код не падает.

0 голосов
/ 25 мая 2009

Простой способ - включить в ваш скрипт print операторы с интервалами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...