有趣问题:循环内调用exec出现“资源不足,部分结果已被除去”

小灯数据-脚本小王子 2009-06-15 10:51:25
测试代码如下:

declare @i1 int
declare @i2 int

set @i1=10000
set @i2=0
while @i2<=@i1
begin
print cast(@i2 as varchar(20))
set @i2=@i2+1
exec('select 1')
end



我在pc机上运行的话,把@i1=1000都会出现这个问题,在服务器上把@i1=1000没事,但@i1=10000就会出现,在线等待求救!
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
资源不足,部分结果已被除去
编辑 | 删除 | 权限设置 | 更多▼ 设置置顶

推荐日志

转到私密记事本
鹰飞 发表于2009年06月16日 01:23 阅读(9) 评论(0)
分类: 数据库 权限: 公开

在SQL Server 2000中,尝试执行以下语句:
declare @i int
declare @j int
set @i=10000
set @j=0
while @j<=@i
begin
select cast(@j as varchar(20))
set @j=@j+1
end
执行这条语句,会出现“资源不足,部分结果已被除去”(服务器够牛的话可能不会出现,如果不出现,就尝试修改@i的值,当@i一定大的时候,肯定会出现!这可能跟数据库某些设置有关吧,暂时还不清楚是跟哪有关)

这个问题我困扰了很久,一直对这句话都理解不了,今天从下午三点一直研究到晚上十一点,主要都是从内存、CPU、磁盘IO方面入手去研究,发现所有状态都十分正常!晚上回家,跟散打讨论了一下这个问题,他对数据库不熟,但对C++开发很熟,他站在软件开发的角度说:“这应该跟显示出来的那个控件有关。”一语惊醒梦中人哪,于是我把select出来的值插到临时表,防止它以表格的形式输出,就这样问题解决!

原来这并不是我的程序问题,应是sql server它已设定了只能显示多少个DBGrid控件,当多次执行select XXX 时,就会调出多个这个控件,当超过预设时,剩下的结果就没办法显示了,于是就报“资源不足,部分结果已被除去”的错误,其实这个提示并不影响程序执行的最终结果(除了显示出来的数据有丢失外)。
ai_li7758521 2009-06-16
  • 打赏
  • 举报
回复
用强一点的机器就没问题。说明还是资源不足引起的。
  • 打赏
  • 举报
回复
问题找出来了,是因为结果集里有太多的表格,把资源给耗尽

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧