Не удалось выделить новую страницу для базы данных 1с

Обновлено: 07.07.2024

Не удалось выделить новую страницу для базы данных "TEMPDB" из-за недостатка места на диске в файловой группе "DEFAULT". Создайте необходимое пространство, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автоматический рост для существующих файлов в файловой группе.

Я сталкиваюсь с этой ошибкой при выполнении хранимой процедуры, в которой есть операторы выбора, содержащие почти 250 миллионов записей.

Хотя у меня есть около 650 ГБ места в базе данных tempdb, я сталкиваюсь с этой ошибкой. Хотелось бы узнать, что я могу сделать дальше в этом

спросил(а) 2021-01-04T16:51:03+03:00 10 месяцев, 3 недели назад

TempDB это не проблема.

Запрос имеет несколько объединений с не SARGable выражениями. Все объединения должны быть обработаны до того, как могут быть отфильтрованы данные предложения where. Если ваш конечный результат (отфильтрованный и сгруппированный) составляет 250 миллионов строк, я ожидаю, что результаты после объединений будут в больших миллиардах. Этот результат должен быть материализован в базе данных tempdb до того, как произойдет фильтрация и группировка.

Попробуйте изменить этот ISNULL(cp.FName,'') = '' на этот (cp.FName = '' OR cp.FName IS NULL) и все подобные выражения. Это может, по крайней мере, позволить некоторой фильтрации произойти до объединения.

Второй шаг - удалить объединения, которые не используются в наборе результатов. Вы только возвращаете данные из таблиц U, UE & DP. Переместить другие внутренние объединения в существующие предложения

Это уменьшит первоначальный продукт объединения до чего-то более управляемого.

Ваши левые объединения будут более сложными для разрешения, но они также не должны быть объединениями, если они не являются частью набора результатов. Я прочитал ваш запрос, чтобы сказать, что вы хотите отфильтровать результаты, если данные отсутствуют. Например, имя FName должно возвращаться только в том случае, если имя FName представляет собой пустую строку, нулевое значение или отсутствует соответствующая запись. Другой способ сказать, что вы не хотите видеть записи с FName, LName, IsActive, заполненные ненулевым/непустым значением.

Это утверждение исключит их, если все 3 будут заполнены. Если вы хотите исключить их, только если какое-либо из полей имеет значение, измените AND на OR внутри предложения EXISTS.

Попробуйте эти изменения, и я ожидаю, что вы вообще избежите раздутой TempDB.

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Исходный номер КБ: 310803

Сводка

В этой статье описываются проблемы, которые касаются использования ссылок в базе данных Access.

Для понимания ошибок ссылок требуется понимание как ссылок на библиотеки в базе данных Access, так и того, что необходимо для установки базы данных на целевом компьютере, не нарушая этих ссылок. В этой статье приводится сводка следующих тем:

Просмотр ссылок базы данных Access

Чтобы просмотреть текущие ссылки на базу данных:

  1. Откройте базу данных.
  2. Нажмите ALT+F11, чтобы Visual Basic редактор.
  3. В меню Сервис выберите пункт Ссылки.

Разрешение ссылок Visual Basic в Access

Доступ загружает допустимый файл (например, библиотеку типов, библиотеку объектов или библиотеку управления) для каждой ссылки в соответствии с информацией, отображаемой в поле Ссылки. Если Access не может найти файл, Access выполняет следующие процедуры, чтобы найти файл:

  1. Проверка доступа для проверки загрузки ссылаемого файла в памяти.
  2. Если файл не загружен в память, Access пытается убедиться в том, что ключ RefLibPaths реестра существует. Если ключ существует, Access ищет имя, которое имеет то же имя, что и ссылка. Если есть совпадение, Access загружает ссылку с пути, на который указывает имя.
  3. Затем в этом порядке выполняется поиск ссылаемого файла в следующих расположениях:
    1. Папка приложения (расположение файла Msaccess.exe).
    2. Текущая папка, которую вы видите при нажатии кнопки Открыть в меню File.
    3. Папка Windows winnt, в которой работают файлы операционной системы.
    4. Папка System в папке Windows или папке Winnt.
    5. Папки в переменной среды PATH, непосредственно доступные операционной системе.

    "Метод MethodName объекта ObjectName не удалось"

    "Функция недоступна в выражении использования"

    "Не может найти проект или библиотеку"

    "Переменная не определена" или "Тип, определенный пользователем, не определенный"

    "Ошибка 5 по времени", "Вызов или аргумент недействительной процедуры", "Библиотека, содержавшая этот символ, не ссылается на текущий проект" или "Библиотека, содержавшая этот символ, не ссылается на текущий проект, поэтому символ не является неопределенным"

    "ActiveX не может создать объект"

    Решение проблем ссылки на компьютере разработки

    Создание новой пустой базы данных, а затем импорт объектов из другого файла базы данных могут создавать проблемы с ссылками, если ActiveX или элементы управления полагаются на ссылки, которые по умолчанию не включены в базу данных. Ссылки по умолчанию для базы данных Access 2000:

    • Visual Basic for Applications
    • Библиотека объектов Microsoft Access 9.0
    • Автоматизация OLE
    • Библиотека ActiveX (ADO) 2.1

    Если источником является другая база данных Access 2000, убедитесь, что ссылки совпадают. Если источник находится в более ранней версии Access, вероятно, используется DAO 3.5 или более ранний вариант; однако Access 2000 не предоставляет DAO 3.5 по умолчанию. Попробуйте удалить ссылку на библиотеку ADO 2.1 (если она существует) и добавить ссылку на объектную библиотеку DAO 3.6.

    Если вы преобразовали базу данных из более ранней версии Access, а база данных содержит ссылку на файл Utility.mda, в большинстве случаев эту ссылку можно удалить, так как функции, которые эта ссылка вызывает, включены в ссылки по умолчанию в Access 2000. Если имеются ссылки на более ранние версии DAO, вы также можете удалить эти ссылки, так как DAO 3.6 может выполнять эти функции.

    Чтобы добавить ссылку на библиотеку:

    1. Откройте базу данных.
    2. Нажмите ALT+F11, чтобы Visual Basic редактор.
    3. В меню Сервис выберите пункт Ссылки.
    4. В статье Доступные ссылки щелкните, чтобы выбрать поле рядом с именем библиотеки, а затем нажмите кнопку ОК.

    Удаление ссылки на библиотеку:

    1. Откройте базу данных.
    2. Нажмите ALT+F11, чтобы Visual Basic редактор.
    3. В меню Сервис выберите пункт Ссылки.
    4. В статье Доступные ссылки щелкните, чтобы очистить поле рядом с именем библиотеки, а затем нажмите кнопку ОК.

    Распространение файлов баз данных

    Существует два основных метода распределения файлов базы данных. Вы можете скопировать файл с компьютера разработки на целевой компьютер или использовать мастер пакета и развертывания для создания пакета настройки.

    Если скопировать файл с компьютера разработки на целевой компьютер, копируется только файл базы данных. Необходимо вручную убедиться, что все файлы, перечисленные в списке ссылок, доступны на уровне правильной версии и в том же относительном расположении на целевом компьютере, что и на компьютере разработки.

    При разработке приложений с временем запуска в Access следует помнить, что некоторые файлы операционной системы должны быть распределены с приложением с временем запуска. Упаковка этих файлов выполняется автоматически компонентом Мастера пакета и развертывания Microsoft Office разработчика 2000. Иногда версии включенных файлов зависят от других приложений, установленных на компьютере разработки и которые могли изменять файлы операционной системы.

    В соответствии с определенными рекомендациями, как правило, версии файлов, которые вы используете, не будут конфликтовать с файлами на целевом компьютере при установке приложения с временем запуска. Ниже указаны следующие рекомендации.

    Обновление списка ссылок

    Если эталонная проблема связана ActiveX управления, иногда можно решить проблему, освежая список ссылок. Чтобы обновить список ссылок:

    1. В Visual Basic редакторе щелкните Ссылки в меню Tools.
    2. В диалоговом окне Ссылки щелкните, чтобы выбрать ссылку, которая еще не выбрана, обратите внимание, какой из них вы выбрали, а затем нажмите кнопку ОК.
    3. В меню Tools щелкните Ссылки снова.
    4. Щелкните, чтобы отменить выбор ссылки, а затем нажмите кнопку ОК.

    Распространение файлов баз данных, ActiveX элементов управления

    Существует два типа лицензий для ActiveX управления: лицензия на время разработки и временная лицензия.

    • Лицензия на разработку позволяет вставлять лицензированные элементы управления ActiveX из Office 2000 разработчика в формы и отчеты в базе данных Access.
    • Временная лицензия позволяет использовать элементы управления ActiveX в базе данных Access на компьютере, на компьютере, на который не установлен Office 2000 разработчика, но временная лицензия не позволяет вставлять новые лицензированные ActiveX элементы управления. Чтобы установить временную лицензию, раздайте элементы управления ActiveX с помощью мастера пакета и развертывания, который записывает лицензию для элементов управления в реестре целевого компьютера.

    Отсутствующий флаг, который можно увидеть при открываемом модуле в представлении Design, а затем щелкните Ссылки в меню Tools, указывает на то, что ссылка на управление общим диалогом на целевом компьютере не соответствует источнику в файле базы данных с компьютера разработки.

    Перерегистрируйте файл

    Файл может быть в списке ссылок без правильной регистрации в реестре. Если вы подозреваете, что это может быть так, выполните следующие действия для повторной регистрации файла:

    1. В Microsoft Windows NT 4.0 щелкнитеStart, указать наFind, а затем нажмите кнопку Файлы или папки , или в Windows 2000, щелкнитеStart, указать toSearch, а затем нажмите кнопку Для файлов и папок .
    2. В поле Named или в поле Поиск файлов и папок с именем поле введите regsvr32.exe.
    3. В поле Look in box щелкните корень жесткого диска (обычно C:).
    4. Щелкните, чтобы выбрать поле Включить подмостки, если он еще не выбран, а затем нажмите кнопку Найти сейчас или поиск сейчас.
    5. После того как вы найдете файл, нажмите кнопку Начните, нажмите кнопку Выполнить, а затем удалите все, что находится в поле Открыть.
    6. Перетащите Regsvr32.exe файл из области результатов поиска в поле Open.
    7. Повторите действия со 2 по 6, на этот разFileName.dll, где FileName — это имя файла, который необходимо перерегистрировать.
    8. После тогоFileName.dll файл находится в поле Open с файлом Regsvr32.exe, нажмите кнопку ОК.
    9. В Access проверьте, существует ли проблема по-прежнему.

    Если у вас нет файла Regsvr32.exe на компьютере, проверьте другие компьютеры для файла. Если файл не доступен, его можно получить на веб-сайте Майкрософт.

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

    Используя мастер импорта и экспорта SQL Server, я получаю эту ошибку:

    Ошибка 0xc0202009: Поток данных Задача 1: Код ошибки служб SSIS DTS_E_OLEDBERROR.
    Произошла ошибка OLE DB. Код ошибки: 0x80004005.
    Не удалось выделить новую страницу для базы данных 'database' из-за недостатка места на диске в файловой группе 'PRIMARY'. Создайте необходимое пространство, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автоматический рост для существующих файлов в файловой группе.

    Какой лучший обходной путь? Эти данные в конечном итоге займет около 60-80 ГБ.

    Какую версию SQL Server вы используете? Сколько свободного места доступно на диске (дисках), где хранятся файлы данных для «базы данных»? Брэндон, SQL SERVER 2012. 760 ГБ свободного места на диске, где хранятся файлы данных для базы данных. Кен, у меня включено автоматическое увеличение, автоматическое увеличение увеличивается на 2500 МБ, а максимальный размер неограничен. Должен ли я все еще сталкиваться с этой проблемой? Возможно ли, что есть несколько автостров, которые необходимо включить? Может ли быть так, что autogrow работает только между элементами, а ОДНА вставка превышает лимит? Я бы поспорил - если 20000-гигабайтная вставка не срабатывает на 2500-гигабайтном автограве . может быть, есть 900 МБ свободной, и вставка не удалась.

    Однажды я столкнулся с этой проблемой у клиента, и мне потребовалось время, чтобы разобраться.

    какую версию sql вы используете?

    это решение спасло меня! Я был на версии Express и обновился до Dev.

    Вы уверены, что это

    Не удалось выделить новую страницу для базы данных 'database' из-за недостатка места на диске в файловой группе 'PRIMARY'.

    Не удалось выделить новую страницу для базы данных «tempdb» из-за недостатка места на диске в файловой группе «PRIMARY».

    Если он [tempdb] находится на отдельном диске, и вы уверены, что у вас достаточно места, я бы пошел дальше и размер файла данных соответствовал ожидаемому размеру конечного состояния:

    Также убедитесь, что файл журнала базы данных отделен от файла данных. Если нет, то вы вернулись с конкурирующими событиями роста. Если они находятся на отдельных дисках, то я бы тоже прошел их по размеру.

    пока вы не получите желаемый размер файла журнала. Давайте назовем это 80GB, где вы установите свой рост до определенного размера. Я использую значения, рекомендованные Полом Рэндалом и Кимберли Трипп

    В глобальный модуль (процедура ПриНачалеРаботыСистемы()) необходимо добавить код:

    Если это не поможет - смотрите другие варианты решения проблемы здесь.

    Ошибки при загрузке данных 1С в базе SQL <в начало>

    SQL State: 42000

    Message: [Microsoft][ODBC SQL Server Driver][SQL Server] Incorrect syntax near 'HOLDLOCK'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required.

    Недопустимое состояние транзакции.

    Необходимо установить compatibility level 80 (режим совместимости) в свойствах базы данных.


    Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия <в начало>

    Порядок сортировки отличается от системного при загрузке базы 1С в формате SQL на WIndows 7 <в начало>

    Необходимо допатчить bkend.dll 0018A79D: 75 EB для отключения проверки порядка сортировки либо опять же использовать секретный релиз платформы v77.27.1

    Примечание к описанию секретного релиза, добавляем public чтобы не было ошибки: GRANT VIEW SERVER STATE TO public

    Попробуйте заменить оригинальную BkEnd.dll на пропатченную Bkend.dll

    SQL сервер не существует или доступ запрещен <в начало>

    Вот такая ошибка может появиться на клиентском компьютере при запуске 1С.


    Расскажу что нужно проверить и настроить

    Если Вы используете SQL Express, то он именуется как ИмяСервера\SQLEXRESS, не забывайте об этом.

    Что нужно сделать на сервере:

    Зайти в SQL Server Configuration Manager.

    В конфигурации сервера и в клиентских протоколах оставить включенным только протокол TCP/IP.



    Убедиться в том, что включена не только служба SQL Server, но и SQL Server Browser (Обозреватель SQL Server).

    Если не помогает - отключить или проверить Брандмауэр.

    В протоколах убрать динамический порт и выставить TCP-порт 1433.


    После этого остановить службы и запустить заново.

    На клиенте:

    Открыть Пуск - Настройка - Панель управления - Администрирование - Источники данных (ODBC) - Системный DSN.

    Там добавить SQL Server, ввести имя (например, Client), указать сервер (SERVER\SQLEXPRESS или именованный SQL Server), нажать Далее, в настройке SQL клиента снять флажок "динамически определить порт" и указать порт 1433.

    Можно сразу же и проверить доступность сервера:


    Все, пробуем запускать 1С еще раз.

    Если это не помогло - попробуйте вместо имени сервера (допустим, Server01, если экземпляр не именованный) ввести в параметрах соединения 1С IP, например 192.168.0.2.

    Если после этого начались какие-то другие ошибки, значит Вы сделали все правильно :)

    Не удалось выделить новую страницу для базы данных <в начало>

    Вот такая ошибка может появиться при выполнении обмена, либо в процессе работы:


    Физически увеличить размер файла базы данных также не получится, так как Вы используете, вероятно, SQL Express.

    Объем базы данных для версии Express (для 2005 и 2008 SQL Server) не может превышать 4 Гб. 64-разрядная версия 2008 R2 SQL Server позволяет работать с базой до 10 Гб.

    Таким образом, необходимо либо обрезать базу, либо использовать другую версию SQL Server. Developer Edition вполне можно приручить для работы нескольких пользователей на Winows XP или другой 32-разрядной системе.

    Читайте также: