Не удалось выделить место для объекта файловая группа primary переполнена
При выполнении тестирования и исправления базы возникает ошибка: Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось выделить место для объекта HRESULT=80040E14 --
Описание ошибки:
Клиент-серверный вариант работы базы конфигурации 1С: Комплексная автоматизация 1.1.58.3 на платформе 1С: Предприятие 8.2. Ошибка при тестировании и исправлении базы возникает в момент обновления конфигурации: В процессе обновления информационной базы произошла критическая ошибка. по причине: Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось выделить место для объекта "dbo._Reference279NG".'PK___Referen__AC8ED0C4B64C2C77' в базе данных "KA2015", поскольку файловая группа "PRIMARY" переполнена. Выделите место на диске, удалив ненужные файлы или объекты в файловой группе, добавив дополнительные файлы в файловую группу или указав параметр автоматического увеличения размера для существующих файлов в файловой группе. HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=2, Severity=11, native=1105, line=1
Если немного углубиться в анатомию событий, прелшестовавших тестированию. То у клиента внезапно возникла проблема нумерации в документах нескольких видов ("Заказ покуателя", "Заказ поставщику", нетиповой добавленный "Наряд-заказ"). Проблема была в том, что при нумерации программа не отражала в номере префикс организации, выбранной в документе. А просто ставила один и тот же префикс (недавно созданной организации) всем документам, и с таким префиксом продолжала по нему сплошную нумерацию. Хотя проблема возникла не сразу, как новую организацию добавили в справочник "Организации".
Было выполнено обновление нумерации с помощью штатной обработки "Настройка стратегии редактирования номеров"
Но выполненная операция не привела к изменениям в решении проблемы. Было принято решение выполнить "Тестирование и исправление" базы данных.
Оно было запущено, в результате первый запуск тестирования окончился неудачей на этапе обновления конфигурации базы данных, сопровожденной информацией об ошибке:
В процессе обновления информационной базы произошла критическая ошибка.
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Не удалось выделить место для объекта "dbo._Reference279NG".'PK___Referen__AC8ED0C4B64C2C77' в базе данных "KA2015", поскольку файловая группа "PRIMARY" переполнена. Выделите место на диске, удалив ненужные файлы или объекты в файловой группе, добавив дополнительные файлы в файловую группу или указав параметр автоматического увеличения размера для существующих файлов в файловой группе.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=2, Severity=11, native=1105, line=1
Обращение к системному администратору с просьбой почистить кэш СУБД не принес ощутимых результвтов. Беглый поиск решения проблемы на форуме сайта infostart. В обсуждении обсуждался вопрос настроек базы на стороне СУБД, связанных с размером системной таблицы tempdb. Потому возник диалог с системным администратором по поводу данной настройки, включено ли у нее "Авторасширение", и какое значение увеличения указано - проценты или мегабайты.
Не удалось выделить пространство для объекта 'myDB' в базе данных 'I 3 Stroke', потому что файловая группа PRIMARY заполнена. Создайте дисковое пространство, удалив ненужные файлы, отбросьте объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автозапуск для существующих файлов в файловой группе.
В базе данных есть еще одна таблица с 25 миллионами строк. Эта база данных будет использоваться только на одной машине, и она будет разработана для хранения данных, которые уже существуют, и ни при каких обстоятельствах никогда не будет превышать ее текущий размер.
3 ответа
Выполните следующие действия:
- Определите, сколько места вы хотите добавить к распределению хранилища базы данных:
- Откройте проводник Windows.
- Щелкните правой кнопкой мыши на диске, чтобы ваши файлы базы данных существовали на
- Выбрать свойства
- Проверьте, сколько свободного места на диске доступно и решите, сколько из этого вы хотите выделить для базы данных
( Предложение: Оставьте по меньшей мере 20% свободного места на диске, если вы размещаете файлы базы данных на том же диске, что и ваша ОС. Под-предложение : не выполнять это! Перестройте /перенесите свои данные на собственный диск, вы ввергаете себя на ввод-вывод.> и оставите по крайней мере 8% для чистого диска данных, эти числа - это оценки того, что, по моему мнению, имеет фактические процентные предложения. )
- Открыть SSMS
- Перейдите на вкладку «Просмотр»
- Выберите «Обозреватель объектов»
- Разверните папку «Базы данных»
- Щелкните правой кнопкой мыши базу данных, в которой вы пытаетесь вставить объем в
- Выберите «Свойства»
- Выберите опцию «Файлы» в разделе «Выбрать страницу» в левой части окна свойств.
- Найдите строку «Файлы базы данных» с «Filegroup» как «PRIMARY»
- Добавьте любое количество мегабайт, которое вы хотите добавить к распределению базы данных, к номеру «Initial Size (MB)»
- Нажмите «ОК»
( Вы также можете рассмотреть свои значения «Автографы», пока вы здесь. )
Вы хотите предоставить своей базе данных столько ресурсов для хранения, сколько можете себе позволить. Если у вас закончится свободное пространство, вы получите эту ошибку без автоматического роста, и если будет автоматически расти, вы будете получать удар производительности каждый раз, когда он должен автоматически расти. Если вы просто из дискового пространства, то это ваш ответ, и вам нужен больший диск.
Устранение, если дизайн позволяет: использовать несколько баз данных по этой лицензии.
Базы данных часто исчерпывают пространство, когда они находятся в режиме полного восстановления. Если вы не выполняете транзакции и ручное резервное копирование достаточно, вы можете изменить режим восстановления на простой.
Вам также может потребоваться восстановить пространство из файла журнала. , , он может быть опустошен, но все равно использовать пространство.
Однако вам лучше задавать этот вопрос администраторам баз данных, которые могут предлагать больше решений.
Похожие вопросы
Популярные теги
наша база данных в настоящее время находится на 64 Гб, и одно из наших приложений начало терпеть неудачу со следующей ошибкой:
System.Data.SqlClient.SqlException : не удалось выделить место для объекта 'cnv.LoggedUnpreparedSpos'.'PK_LoggedUnpreparedSpos' в базе 'travelgateway' , потому что 'PRIMARY' файловая группа находится в полном объеме. Создайте на диске путем удаления ненужных файлов, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или указав параметр автоматического увеличения размера для существующих файлов в файловой группе.
Я дважды проверил все: все файлы в одной файловой группе могут автоматически расширяться с разумным шагом (100 Мб для файла данных, 10% для файла журнала), для базы данных доступно более 100 Гб свободного места, tempdb настроен на автозапуск, а также с большим количеством свободного места на жестком диске.
чтобы решить проблему, я добавил второй файл в файловую группу и ошибка ушла. Но меня беспокоит вся эта ситуация.
где здесь проблема, ребята?
хорошо, он работает. Оказывается, что Том NTFS, где находились файлы БД, получил сильно фрагментирован. Остановил SQL Server, дефрагментировал все это, и с тех пор все было в порядке.
рекомендуется не создавать пользовательские объекты в основной файловой группе. При наличии полосы пропускания создайте новую файловую группу, переместите пользовательские объекты и оставьте системные объекты в основном.
следующие запросы помогут вам определить пространство, используемое в каждом файле, и верхние таблицы с наибольшим количеством строк и если есть какие-либо кучи. Это хорошая отправная точка для исследования этой проблемы.
столкнулся с той же проблемой, и сначала дефрагментация, казалось, работала. Но это ненадолго. Получается сервер клиент использовал, управлял Express version и это имеет предел лицензирования около 10gb .
поэтому, хотя размер был установлен на "неограниченный", это не было.
Я также столкнулся с той же проблемой, где начальный размер dtabase установлен в 4Gb, а autogrowth установлен на 1Mb. Виртуальный зашифрованный диск TrueCrypt, на котором находилась база данных, казалось, имел много места.
Я изменил пару (выше) вещи:
- Я превратил службу Windows для Sql Server Express из автоматическая to руководство, таким образом, работает только "обычный" Sql Server. (Несмотря на то, что я запускаю Sql Server 2008 R2, который должен позволить 10 ГБ.)
- Я изменил авторасширение от 1 МБ до 10%
- Я изменил увеличение размера авторасширение от 10% до 1000 МБ
- Я дефрагментировал диск
- я сократил базу данных:
- вручную DBCC SHRINKDATABASE('. ')
- автоматически щелкните правой кнопкой мыши на базе данных | "свойства" | "автоматическая усадка" | "усечь журнал на контрольной точке")
все безрезультатно (я мог бы вставить еще несколько записи, но вскоре столкнулись с той же проблемой). Файл подкачки, упомянутый Тобби, заставил меня попробовать больший виртуальный диск. (Хотя мой диск не должен содержать таких системных файлов, так как я работаю без его монтирования много времени.)
- Я сделал новый большой виртуальный диск с TrueCrypt
при создании этого я столкнулся с TrueCrypt-вопросом, если я собираюсь хранить файлы размером больше 4 ГБ (как показано в этом суперпользователя вопрос).
- Я сказал TrueCrypt, что буду хранить файлы размером больше 4 ГБ
после этих последних двух я был в порядке, и я предполагаю, что этот последний сделал свое дело. Я думаю, что TrueCrypt выбирает exfat файловой системы (как описано здесь), которая ограничивает все файлы до 4 ГБ. (Так что мне, вероятно, не нужно было увеличивать диск в конце концов, но я все равно сделал.)
Это, вероятно, очень редкий случай границы, но, возможно, это это кому-то помогает.
сделать одну вещь, перейти к свойствам базы данных выберите файлы и увеличьте начальный размер базы данных и установите первичную файловую группу как autoincremented. перезапустить SQL Server.
вы сможете использовать базу как и раньше.
Я только что столкнулся с той же проблемой. Причина в том, что файл виртуальной памяти " - файл подкачки.sys " был расположен на том же диске, что и наши файлы данных для наших баз данных (D: drive). Он удвоился в размере и заполнил диск, но windows не собирала его, т. е. казалось, что у нас было 80 ГБ бесплатно, когда мы на самом деле этого не делали.
перезапуск SQL server не помог, возможно, дефрагментация даст ОС время, чтобы освободить файл подкачки, но мы просто перезагрузили сервер и вуаля, файл подкачки сократилась и все работало нормально.
интересно то, что в течение 30 минут, которые мы исследовали, windows не рассчитала размер файла подкачки.представление SYS на всех (80Гб). После перезагрузки windows нашла файл подкачки и включила его размер в общее использование диска (Теперь 40gb - который все еще слишком большой).
пожалуйста, проверьте тип роста файла базы данных, если его ограничение делает его неограниченным
SQL Server освобождает только все страницы, используемые таблицей кучи, когда выполняются следующие условия: происходит удаление в этой таблице. Ля блокировка уровня таблицы удерживается. Обратите внимание на таблицы кучи любой таблицы, не связан с кластеризованным индексом.
Если страницы не освобождены, другие объекты в базе данных не могут использовать страницы.
однако при включении уровня изоляции на основе управления версиями строк в База данных SQL Server 2005, страницы не могут быть освобождены, даже если блокировка уровня таблицы удерживается.
чтобы обойти эту проблему, используйте один из следующих методов: Включите подсказку TABLOCK в инструкцию DELETE, если строка уровень изоляции на основе управления версиями не включен. Для например, использовать утверждение, похожее на следующее:
удалить из TableName с (TABLOCK)
- Это имя таблицы. Используйте усечь Инструкция TABLE, если вы хотите удалить все записи в таблице. Например, используйте оператор, аналогичный следующему:
усечь таблицу TableName
создайте кластеризованный индекс в столбце таблицы. For more сведения о создании кластерный индекс на таблице, см. Раздел" Создание кластеризованного индекса " в SQL
вы заметите в нижней части ссылки, что не отмечено, что это относится к SQL Server 2008, но я думаю, что это делает
Уровень 17, состояние 2, процедура aareindex, строка 21 [Batch Start Line 0] Не удалось выделить место для объекта dbo.SORT, временное хранилище запуска: 422738479742976 в базе данных mydatabase , потому что ПЕРВИЧНАЯ файловая группа заполнена. Создайте дисковое пространство, удалив ненужные файлы, отбросив объекты в файловой группе, добавив дополнительные файлы в файловую группу или включив автоматический рост для существующих файлов в файловой группе.
Итак, я хочу попробовать увеличить размер TempDb
Я могу увидеть размер с помощью SSMS, посмотрев на свойства базы данных, но не знаю, как его установить.
Размер файла уже составляет 10236 МБ, а ограничение Express - 10 ГБ. Однако отчет об использовании диска показывает, что 26% дискового пространства нераспределено, 40% - это данные, а 32% - индекс.
- Что делает это select type_desc, name, size, max_size, growth from tempdb.sys.database_files выход?
- Thans @ DavidBrowne-Microsoft Я обновил вопрос.
- >>> Размер файла уже составляет 10236 МБ
Размер файла уже 10236 Мб, а лимит Express - 10 Гб.
Если ваша база данных пользователей data file size достиг своего предела (10 ГБ в Express Edition), но 26% дискового пространства нераспределено, вы можете попробовать rebuild ваши индексы с sort в tempdb .
DBCC DBREINDEX является deprecated и нет причин использовать в SQL Server 2017 , и с alter index..rebuild вы можете указать, что хотите выполнить sort в tempdb :
Когда ты rebuild индекс, вам сначала понадобится space построить копию вашего index (и это место будет выделено в вашем db ) и для его постройки вам также понадобится место, чтобы сделать sort , это пространство можно выделить в tempd . В вашем случае ошибка явно говорила, что не было space сделать sort в вашем БД, так что, возможно, вы решите свою проблему, если sort будет выполняться в tempdb .
Вы можете узнать больше об этом здесь: Параметр SORT_IN_TEMPDB для индексов
Вам не нужно увеличивать размер temp db.
в базе данных mydatabase, потому что файловая группа PRIMARY заполнена.
Сообщает вам, что он не может писать в вашу основную файловую группу, если она заполнена (c: \ path to database \ mydatabase.mdf). Либо нет места на диске, где хранится MDF, либо более вероятная причина заключается в том, что в вашей основной файловой группе больше нет свободного места для записи.
После перехода на MS SQL 2005 или 2008
сталкиваюсь с проблемой переполненияЯ понимаю что всё дело в настроках базы, а не в отсутствии места на диске
Но как правильно выполнить перестройку баз?shumik73
После перехода на MS SQL 2005 или 2008
сталкиваюсь с проблемой переполненияЯ понимаю что всё дело в настроках базы, а не в отсутствии места на диске
Но как правильно выполнить перестройку баз?Ну или через свойство базы данных LZ_SPR в SSMS (закладка Files). Если есть место на диске, где "лежит" существующий файл базы данных, можно просто увеличить его размер.
если нету никаких внешних факторов ограничений(админы, безопасность и т.д.), то мона снять все ограничения на базу, по ходу ручками мона размер увеличить, шоб потом не заморачивать о размере
Правая педаль на БД - Свойства - Файлы - колонка в гриде Авторасширение, три точки - Разрешить авторасширение.
------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)Авторасширение - там по default стоит
[attachment 12535 MS_SQL.JPG]
Однако как тока размер базы привысит 4 Гб - так перестает команду INSERT воспринимать
Мне удалось в той же колонке, где [. ] авторасширение изменить "начальный размер" на 150Мбт. Больше не получилось.
- но эта мера была временная. Добавил еже немного записей и ошибка повторилась.Теперь клиента прошу почистить ненужные записи чтобы хоть как-то продолжить работу.
стопицот! если судьба всеж таки сжалится и двинет мну до алматы в командировку, обязательно нуна встретиться
стопицот! если судьба всеж таки сжалится и двинет мну до алматы в командировку, обязательно нуна встретиться
стопицот! если судьба всеж таки сжалится и двинет мну до алматы в командировку, обязательно нуна встретиться
После упоминания про 4гб, сразу такая же мысль. Но.
Если посмотреть первый топик, то там упоминание, что "после перевода на 2005, 2008"
У 2008R2 кажется ограничение 10гб.
Да и вообще, с чего переносили?И Fat32, тоже не сходится, если переносили на ту же машину.
Сплошь загадка.Если только именно к моменту переноса, достигнут предел 4гб. Просто совпадение, а не результат переноса.
Тогда временный выход, 2008R2/
Либо дробить базу
Ну и купить "взрослый" сервер )Читайте также: