Thursday, September 11, 2008

ปัญหา The server was unable to allocate from the system paged pool because the pool was empty กับ SQL 2000

ประมาณสัปดาห์ที่แล้ว อยู่ดี ๆ SQL 2000 บน Windows 2003 Standard (RAM 4GB + ใช้ /3GB เอาไว้ ) ซึ่งใช้งานมาได้ปกติสัก 3-4 เดือนแล้ว ก็เกิด Error ตอนสาย ๆ และ เป็นทุกวัน แต่พอ Restart service MSSQLSERVER ใหม่ ก็จะใช้งานได้ตามปกติ

ซึ่งตอนที่มีปัญหา หากใช้ Query Analyzer เข้า Server ก็ Connect ไม่สำเร็จ และเจอ Error แบบนี้

Server: Msg 11, Level 16, State 1, Line 0
[Microsoft][ODBC SQL Server Driver][DBNETLIB]General network error. Check your network documentation.
Server: Msg 10054, Level 16, State 1, Line 0
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()).

และถ้าไปดูใน Event Viewer ของ Windows ในส่วนของ System ก็จะเจอ Error แบบนี้
The server was unable to allocate from the system paged pool because the pool was empty.

การแก้ไข : วิธีแก้ไขที่ทดลองแล้วประสบความสำเร็จ ก็คือ ใช้วิธีตามนี้
http://support.microsoft.com/kb/312362

สำหรับค่าใน Registry ที่ได้แก้ไขไปก็ คือ
แก้ไข Registry ที่ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management
โดยที่
1. เพิ่ม PoolUsageMaximum เป็น REG_DWORD โดยให้มีค่า เป็น 40 (Decimal)
2. แก้ไข PagedPoolSize เป็น REG_DWORD โดยแก้ไขจาก 0x00000000 เป็น 0xFFFFFFFF ( Hex)
3. Reboot Server ใหม่

เป็นอันจบการแก้ไข :)