Файловая группа SQL Server заполнена во время выполнения большого оператора INSERT INTO

Рассмотрим сценарий SQL, предназначенный для копирования строк из одной таблицы в другую в базе данных SQL 2000. Перенос включает 750 000 строк в простом виде:

INSERT INTO TableB([ColA],[ColB]....[ColG])
SELECT [ColA],[ColB]....[ColG]
FROM  TableA

Это длительный запрос, возможно, отчасти потому, что ColB относится к типу ntext. В операторе SELECT есть несколько CONVERT() операций.

Сложность заключается в том, что через ~ 15 минут работы это исключение вызывается SQL Server.

Не удалось выделить место для объекта «[ТАБЛИЦА]». «[PRIMARY_KEY]» в базе данных «[DB]», поскольку файловая группа «PRIMARY» заполнена. Создайте дисковое пространство, удалив ненужные файлы, отбросив объекты в файловой группе, добавив дополнительные файлы в файловую группу или включив автоматический рост для существующих файлов в файловой группе.

Дополнительная информация

  • Авторастание уже идет.
  • на диске более чем достаточно свободного места (~ 20гб)
  • одиночный .mdf составляет ~ 6 ГБ
  • нет триггеров в исходной или целевой таблицах

alt text

alt textВопрос

Какие параметры необходимо установить через Management Studio или через T-SQL, чтобы база данных могла расти по мере необходимости? Какие еще средства вы бы порекомендовали?

Разрешение

База данных не могла расти по мере необходимости, потому что я размещал эту базу данных на экземпляре SQL Server 2008 Express. Обновление до не стерилизованной версии SQL Server решит эту проблему.

alt text


person p.campbell    schedule 23.11.2009    source источник
comment
Можете ли вы также поделиться снимком экрана / информацией о настройке ОСНОВНОЙ файловой группы и настройках автоматического увеличения? (т.е. все файлы, включенные в ОСНОВНОЙ, и настройки автоматического увеличения для каждого)   -  person boydc7    schedule 23.11.2009


Ответы (3)


Лучший совет: предварительно увеличьте размер своей базы данных, вместо того, чтобы заставлять ее увеличиваться по требованию (что может быть медленной операцией).

Одна из причин возникновения этой ошибки - слишком большой интервал автоматического увеличения. Помимо очевидного (попытка увеличения на 25 ГБ при наличии только 20 ГБ на диске), для выделения большого интервала роста может потребоваться очень много времени, что может привести к тому, что ваш запрос будет истекать по тайм-ауту.

РЕДАКТИРОВАТЬ: Судя по вашему новому снимку экрана, не похоже, что проблема заключается в интервале. Но мой первоначальный совет все еще в силе. Попробуйте самостоятельно увеличить базу данных вручную и посмотрите, позволяет ли это вам:

ALTER DATABASE foobar
MODIFY FILE (name = foobar_data, size = 5000)
person BradC    schedule 23.11.2009

Если вы можете поделиться снимком экрана / информацией о составе вашей ОСНОВНОЙ файловой группы и настройках автоматического увеличения (то есть обо всех файлах, включенных в ОСНОВНОЙ, и настройках автоматического увеличения для каждого), это также будет полезно. Первая мысль, не видя ничего дополнительного, может заключаться в том, что у вас потенциально есть maxFileSize, указанный для одного или нескольких файлов, составляющих вашу ПЕРВИЧНУЮ группу, но это просто догадка, на самом деле не видя информации.

person boydc7    schedule 23.11.2009
comment
Спасибо, Чад, обновил вопрос скриншотом определения FG. - person p.campbell; 23.11.2009
comment
Похоже, вы уже догадались - Express поддерживает размер базы данных только 4 ГБ. В будущем я бы рекомендовал публиковать информацию об издании и версии (например, Sql2000, 2005, 2008 и экспресс, рабочая группа, стандарт и т. Д.) - большинство людей, вероятно, смогли бы указать это заранее. Удачи! - person boydc7; 23.11.2009

Есть ли какие-нибудь триггеры на рассматриваемой таблице? Я видел аналогичные результаты раньше, когда были триггеры, и на самом деле это было расширение файла журнала (ldf), которое достигло предела, просто регистрируя все запросы, которые выполнялись триггерами, а не сам mdf. Если есть какие-либо триггеры, я бы подумал об их отключении, пока вы делаете это обновление, и посмотрите, поможет ли это (я предполагаю, что это однократная миграция данных, а не повторяющееся событие?)

person fyjham    schedule 23.11.2009