伺服器環境大緻情況如下:
作業系統: microsoft windows server 2003 r2 enterprise edition service pack 2
資料庫 : microsoft sql server 2005 - 9.00.5000.00 (intel x86) 。
機器實體記憶體8g,開啟了“使用awe配置設定記憶體選項(u)"
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYmZ5Q2NwkDO3gDO3MmZiJWO2EDN4MjYzYzYhdDMzgTOtcjM4MzMyMDMvw1NwMTMwIzLcJDN1MzNvw1ZvxmYvwVbvNmLn9GbiRXauNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.png)
在這台伺服器上,建立yoursqldba後,配置過程中建立函數的時候,報如下錯誤,重試了幾次都是如此,但是其它應用從來沒有出過這個錯誤,而且這是一台生産伺服器,很多應用在跑,是以這才是讓我納悶的地方:
消息 701,級别 17,狀态 13,過程 clr_getfolderlist,第 1 行
there is insufficient system memory to run this query.
消息 701,級别 17,狀态 13,過程 clr_getfolderlistdetailed,第 1 行
其實這兩個函數也沒特别之處,而且在其它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];
于是也按那些人讨論的,檢查伺服器環境:實體記憶體,資料庫版本,awe是否開啟,最大伺服器記憶體,clr enabled 配置等等
sp_configure 'clr enabled'
name minimum maximum config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
clr enabled 0 1 1 1
但是,折騰了很長時間,也沒搞清真正的出錯原因,沒辦法,隻能祭出大殺器”重新開機sql server服務",然後重新建立yoursqldba資料庫,建立相關存儲過程、函數等。暫時記錄一下這個問題,等有空閑或下次遇到時候,再想想辦法解決它。