Может быть недостаточно виртуальной памяти, при наличии большого количества баз данных в SQL Server

Переводы статьи Переводы статьи
Код статьи: 316749 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Проблема

Возможно, недостаточно доступных виртуального адресного пространства в процесс Microsoft SQL Server, если выполняются все следующие условия выполняются после под управлением SQL Server по умолчанию значений конфигурации:
  • Сервер имеет 2 ГБ ОЗУ или больше.
  • Существует большое количество баз данных в системе (для Например, более 500).
  • В большинстве баз данных обновляются (например, базы данных не имеют статус «только для чтения»).
  • Имеется достаточное количество одновременно активных пользовательских соединений для Используйте большую часть 255 рабочими потоками SQL Server.
При использовании SQL Server могут возникать следующие сообщения об ошибках после всего 2 ГБ виртуального адресного пространства используется вверх (или после всего 3 ГБ виртуальной адрес пространства, отведенного на SQL Server Enterprise Edition с / / 3 GB Перейдите в файл Boot.ini).

Сообщение 1

Ошибка: 17802, уровень серьезности: 18, состояние: 3
Не удалось создать поток событий сервера.

Сообщение 2

SQL Server не удалось вызвать поток process_loginread.

Сообщение 3

Предупреждение: Очистка кэша процедур для освобождения непрерывной памяти.

Распределение буфера: Кражи = 3454 бесплатно = 2540 процедуры = 138
Inram = 0 = 1108 сохранить измененный = 35
I / O = 0, заблокирована = 0, остальные = 214821
Подсчеты буфера: Зафиксированные = 222096 целевой = хэшируются 222096 = 215964
InternalReservation = 547 ExternalReservation = 0 мин бесплатно = 512
Кэш процедур: TotalProcs = 8 TotalPages = 138 InUsePages = 138
Кражи динамических диспетчер памяти: = 3556
OS = 497 общие = 1706
План запроса = 755 оптимизатор = 0
Служебные программы = 9 подключения = с 1583
Глобальные объекты памяти: Ресурс = 1119 блокировки = 163 XDES = 1 SQLCache = 90 репликации = 5 LockBytes = 2 ServerGlobal = 20
Предоставляет диспетчер памяти запроса: = Ожидание 0 = 0 максимум = 164370 доступных = 164370

Причина

Для каждой обновленной базы данных SQL Server выделяет минимум один блок 64 КБ для использования при форматировании записи журнала, прежде чем они записываются диск. Такое распределение происходит при первой записи журнала для База данных, таких как во время вставки, обновления, или УДАЛИТЕ оператор. В зависимости от мероприятия и размер создаваемого журнала записей, последующие изменения могут вызвать распределение дополнительных Распределение 64 КБ. SQL Server 7.0 будет выделять нет более трех блоков 54 КБ. В SQL Server 2000 верхний номер выделения памяти для каждой базы данных функция число процессоров, которые SQL Server настроен для использования.

Временное решение

Использование -g параметр запуска, чтобы оставить дополнительные, незарезервированные виртуальной памяти доступные для этих баз данных распределения. В -g параметр можно найти в Readme.txt SQL Server 7.0 пакет и в электронной документации по SQL Server 2000. «Дополнительная информация» настоящей статьи содержит параметры, которые корпорация Майкрософт рекомендует использовать Чтобы определить подходящее значение для этого параметра.

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

На компьютере с 2 ГБ ОЗУ или больше SQL Server резервирует все, кроме 256 МБ (SQL Server 7.0) или 384 МБ (SQL Server 2000) виртуальный адрес место в процессе загрузки для использования в буферном пуле. Кроме того, чтобы хранение кэша данных и процедуры SQL Server использует память буферного пула для обслуживания большинство запросов памяти процессов SQL Server, которые меньше, чем 8 КБ. Оставшиеся незарезервированные памяти предназначен для использования с другими распределения, которые не могут быть обработаны из буферного пула. Эти выделения памяти включают, но не ограничиваются:
  • Блок переменных среды для любого соответствующего потока и стеки потоки, создаваемые SQL Server. После SQL Server создает все 255 рабочих потоки, это примерно 140 МБ.
  • Выделений, сделанных другими библиотеками DLL или процессы работают в адресном пространстве сервера SQL (которая зависит от системы система), например:
    • Поставщики OLE DB из любых связанных серверов.
    • COM-объекты, загруженные с помощью sp_OA системные хранимые процедуры или расширенных хранимых процедуры.
  • Все изображения (.exe или .dll), которые загружаются в адресе пространство, которое обычно используют 20 до 25 МБ, но более вероятно при использовании связанные серверы sp_OA, или расширенных хранимых процедур.
  • Куча процесса и кучах, которые SQL Server может Создайте. Во время запуска это обычно составляет 10 МБ, но может быть несколько if При использовании связанных серверов sp_OA, или расширенных хранимых процедур.
  • Выделения из процессов SQL Server, которые больше 8 КБ, такие как необходимые для планов большой запрос отправки и получения буферов, если очередь размер сетевого пакета параметр конфигурации находится ближе к 8 КБ и т. д. Чтобы увидеть это номер, поиск Зарезервировано ОС значение, выводится в инструкции DBCC MEMORYSTATUS и со статусом Количество 8-Килобайтных страниц. Это типичные значения — 5 МБ.
  • Массив для отслеживания сведений о состоянии для каждого буфера Это в буферном пуле. Это обычно около 20 МБ, если SQL Server выполняется с помощью расширений AWE (Address Windowing) включена, в этом случае он может быть значительно выше.
В системах с большим количеством баз данных Распределение 64 КБ, необходимых для форматирования журнала может занять все оставшиеся виртуальной памяти. В этот момент может произойти сбой последующих распределений, полученный в одной или нескольких ошибок, перечисленных в разделе «Проблема» разделе этой статьи.

С помощью -g параметр запуска можно указать SQL Server, чтобы оставить дополнительной виртуальной памяти таким образом, эта комбинация выделения памяти, связанной с журналом и обычного выделения памяти не нехватка виртуальное адресное пространство.

В следующей таблице перечислены некоторые предлагаемые основы для -g значение в зависимости от количества баз данных и сервера версия:
Свернуть эту таблицуРазвернуть эту таблицу
Базы данныхSQL Server 7.0SQL Server 2000
250-g134Н / Д
500-g185Н / Д
750-g237Н / Д
1000-g288-g288
1250-g340-g340
1500-g392-g392
Эта таблица была рассчитана с использованием обычной значений которые перечислены и также основывается на предположении, что нет связанного сервера действия, sp_OA или используются расширенные хранимые процедуры. Он основан на допущения не используются расширения AWE, что это приложение SQL Profiler находится не в использовании. Любой из этих условий может потребоваться увеличить значение -g.

Корпорация Майкрософт рекомендует выполнить серьезные внимание перед запуском сервера с несколькими базами данных, чем это, поскольку накладные расходы, требуется наличие этого количества баз данных в системе перевод из буферного пула, что может привести к большой объем виртуальной памяти Низкая производительность системы в целом.

Кроме того создание большого количества баз данных имеет наиболее значительное влияние на виртуальной памяти. Существуют также выделения памяти на основе баз данных, которые могут вызвать условие исчерпания памяти пула буфера. Например может появиться следующее сообщение об ошибке:
Ошибка: 701, уровень серьезности: 17, состояние: 123.
Недостаточно системной памяти для выполнения данного запроса.
Такого рода условие исчерпания памяти может быть наиболее распространенных в SQL Server 2005, так как SQL Server 2005 отслеживает дополнительные метаданные на основе баз данных более ранних версий SQL Server.

Когда отслеживание использования индекса с помощью sys.dm_db_index_usage_stats Хранимая процедура операции может потребоваться значительный объем памяти. Для этой операции требуется значительный объем памяти, если каждая база данных содержит большое количество индексов.

Свойства

Код статьи: 316749 - Последний отзыв: 7 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
Ключевые слова: 
kberrmsg kbtshoot kbnofix kbprb kbmt KB316749 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:316749

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com