Моя среда - это 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? В противном случае, учитывая ограниченный объем памяти, который у вас есть, ваша ситуация, вероятно, этого требует.
Что касается вашего основного вопроса, нужно проверить несколько вещей:
Итак, я предлагаю здесь процесс исключения. Также - если вы можете воспроизвести OOM с определенными запросами связанного сервера, вы можете запустить запросы памяти, чтобы увидеть до / после, и тогда это будет довольно хороший индикатор. Также проверьте примеры поставщиков связанного сервера, чтобы убедиться, что вы не сталкиваетесь с известными проблемами. [Кстати, поскольку это не поставщик Oracle - я знаю, что в некоторых случаях вы получаете эти сообщения, если Oracle Linked Server работает в процессе, и выведение его из процесса помогло.]
Кроме того, у вас может быть законная потребность в дополнительной памяти, поэтому долгосрочным исправлением может быть масштабирование до большего объема памяти и x64. Возможно, вы сможете настроить зарезервированный MTL и максимальный объем памяти, но это может быть нехватка памяти, которую можно решить только с помощью новой архитектуры и увеличенной памяти.