服务器环境大致情况如下

操作系统:   Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2

数据库  :   Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) 。

机器物理内存8G,开启了“使用AWE分配内存选项(U)"

There is insufficient system memory to run this query 错误_sql

在这台服务器上,创建YourSQLDba后,配置过程中创建函数的时候,报如下错误,重试了几次都是如此,但是其它应用从来没有出过这个错误,而且这是一台生产服务器,很多应用在跑,所以这才是让我纳闷的地方:

消息 701,级别 17,状态 13,过程 clr_GetFolderList,第 1 行

There is insufficient system memory to run this query.

消息 701,级别 17,状态 13,过程 clr_GetFolderListDetailed,第 1 行

There is insufficient system memory to run this query.

There is insufficient system memory to run this query 错误_microsoft_02

其实这两个函数也没特别之处,而且在其它64数据库上,也没有碰到过类似的错误。

CREATE FUNCTION yUtl.clr_GetFolderList (@FolderPath nvarchar(4000), @SearchPattern nvarchar(4000))

RETURNS TABLE ([FileName] nvarchar(255))

AS EXTERNAL NAME [YourSqlDba_ClrFileOp].[Clr_FileOperations.FileOpCs].[Clr_GetFolderList];

GO

CREATE FUNCTION yUtl.clr_GetFolderListDetailed (@FolderPath nvarchar(4000), @SearchPattern nvarchar(4000))

RETURNS TABLE ([FileName] nvarchar(255), [FileExtension] nvarchar(255), [Size] bigint, [ModifiedDate] datetime, [CreatedDate] datetime)

AS EXTERNAL NAME [YourSqlDba_ClrFileOp].[Clr_FileOperations.FileOpCs].[Clr_GetFolderListDetailed];

GO

网上搜索了一下,发现蛮多人也遇到个这个错误:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/81cd3698-10b2-4a67-ad92-fa123cef2caa/there-is-insufficient-system-memory-to-run-this-query-error-when-running-checkdb,但是也没有一个定论。

于是也按那些人讨论的,检查服务器环境:物理内存,数据库版本,AWE是否开启,最大服务器内存,clr enabled 配置等等

sp_configure 'clr enabled'

name                                minimum     maximum     config_value run_value

----------------------------------- ----------- ----------- ------------ -----------

clr enabled                         0           1           1            1

但是,折腾了很长时间,也没搞清真正的出错原因,没办法,只能祭出大杀器”重启SQL SERVER服务",然后重新创建YourSQLDba数据库,创建相关存储过程、函数等。暂时记录一下这个问题,等有空闲或下次遇到时候,再想想办法解决它。