SQL Server 2005 sp_send_dbmail出现Internal error at FormatRowset (Reason: Not enough storage is availa

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 2005 sp_send_dbmail出现Internal error at FormatRowset (Reason: Not enough storage is availa相关的知识,希望对你有一定的参考价值。

案例环境:

 

操作系统: Windows 2003 SE 32bit(SP2)

数据库版本:Microsoft SQL Server 2005 - 9.00.5069.00 (Intel X86)

            Aug 22 2012 16:01:52

            Copyright (c) 1988-2005 Microsoft Corporation

            Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

 

案例分析:

 

如下所示,使用下面SQL语句发送邮件时,遇到一个非常奇怪的错误信息:Not enough storage is available to complete this operation

EXEC msdb.dbo.sp_send_dbmail @recipients = \'konglb@xxx.com\',
     @subject = \'it is only test\', @body = NULL, @body_format = \'text\',
     @query_result_separator = \'---\',
     @query = \'SELECT * FROM  MESDB.dbo.MES_DAILY_CLOSING_LOG\';

 

Msg 22050, Level 16, State 1, Line 22

Error formatting query, probably invalid parameters

Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 517

Query execution failed: Sqlcmd: Error: Internal error at GetDataRowset (Reason: Not enough storage is available to complete this operation).

Sqlcmd: Error: Internal error at FormatRowset (Reason: Not enough storage is available to complete this operation).

 

clip_image001

 

错误虽然提示storage not engough,其实这个错误跟存储没有任何关系,这个表MES_DAILY_CLOSING_LOG里面有三个字段为NVARCHAR(MAX),采取下面两种方式可以临时解决这个问题。

 

1: 如果在@query里面排除这三个NVARCHAR(MAX)字段,那么邮件正常发送,不会出现任何错误。

2: 如果在@query里面将这个字段做一下转换,例如CAST(MAIL_RECEIPS AS NVARCHAR(4000)),那么邮件也能正常发送。

 

在SQL Server 2008、 SQL Server 2012下都不会发生,另外在SQL Server 2005(9.00.5000.00)这个版本下测试,也没有出现这个问题。只有这台服务器会出错,后面在这篇sp_help_jobsteplog fails when run as a @query of sp_send_dbmail章里面作者描述,重启数据库服务后,就不会出现这个问题。等了一周终于等到一个合适的时机重启了服务器,重启过后验证发现,果然这个错误就消失了。网上关于这个错误的资料非常少,严重怀疑是触发了数据库的某一个Bug导致。

 

参考资料:

https://social.msdn.microsoft.com/Forums/en-US/0882f984-58f4-4a2a-8d0c-5f2c1e3cc853/msdbdbospsenddbmail-error?forum=transactsql

http://dba.stackexchange.com/questions/3591/sp-help-jobsteplog-fails-when-run-as-a-query-of-sp-send-dbmail

 

以上是关于SQL Server 2005 sp_send_dbmail出现Internal error at FormatRowset (Reason: Not enough storage is availa的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2005 异常

急需SQL server 2005的介绍

SQL server2005 安装错误

已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

如何转换SQL Server 2008数据库到SQL Server 2005

如何转换SQL Server 2008数据库到SQL Server 2005