Назад | Перейти на главную страницу

FAIL_VIRTUAL_RESERVE в SQL 2008 SP2

Моя среда - это SQL 2008 Standard x86 с SP2, работающим на Server 2008 Standard, с оперативной памятью 4Gb и включенным AWE. Я также установил -g1024 в качестве параметра запуска.

Я получаю следующую ошибку в журнале ошибок SQL: Ошибка виртуального выделения байтов: FAIL_VIRTUAL_RESERVE 327680

Затем позже: ошибка: 701, уровень серьезности: 17, состояние: 123. Недостаточно системной памяти во внутреннем пуле ресурсов для выполнения этого запроса.

Которые повторяются до тех пор, пока сервер в конечном итоге не перестанет обрабатывать запросы.

Я сильно подозреваю, что проблема связана со связанными серверами, поскольку я подключаюсь к серверу Sybase ASE 15 с помощью поставщика «Microsoft OLEDB Provider for ODBC Drivers». Как я могу доказать, так ли это, и / или устранить эту проблему?

Спасибо.

Изменить: вот текущий результат для MEMORYCLERK_SQLGENERAL в условиях ошибки ..

VM Reserved 0
VM Committed    0
AWE Allocated   0
SM Reserved 0
SM Committed    0
SinglePage Allocator    2168
MultiPage Allocator 2056

Во-первых, установлен ли максимальный объем памяти сервера для экземпляра SQL Server? В противном случае, учитывая ограниченный объем памяти, который у вас есть, ваша ситуация, вероятно, этого требует.

Что касается вашего основного вопроса, нужно проверить несколько вещей:

  • Запустите DBCC MEMORYSTATUS, чтобы увидеть, выделяются ли определенные многостраничные распределители (пытаясь исключить других потребителей памяти небуферного пула)
  • Чтобы узнать о фрагментации виртуальной памяти, прочтите этот пост http://troubleshootingsql.com/2010/02/16/how-to-find-who-is-usingeating-up-the-virtual-address-space-on-your-sql-server/ (другие примеры - это только один пример)

Итак, я предлагаю здесь процесс исключения. Также - если вы можете воспроизвести OOM с определенными запросами связанного сервера, вы можете запустить запросы памяти, чтобы увидеть до / после, и тогда это будет довольно хороший индикатор. Также проверьте примеры поставщиков связанного сервера, чтобы убедиться, что вы не сталкиваетесь с известными проблемами. [Кстати, поскольку это не поставщик Oracle - я знаю, что в некоторых случаях вы получаете эти сообщения, если Oracle Linked Server работает в процессе, и выведение его из процесса помогло.]

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