单独执行一个存储过程正常,但是在循环执行多个时出现IDispatch error #3121错误?

tristsesame 2003-11-25 04:14:14
我在VC里使用ADO来调用存储过程.
大概有十多个,
我使用了个for循环来一个个execute

但其中有一个总是出现IDispatch error #3121错误
上google查了查,除了找到这个
IDispatch error #3121 - [Microsoft OLE DB Provider for
SQL Server] Timeout expired
好像也没找到别的什么.

但是如果我在程序里只调用这一个存储过程时,却能成功.

或者是我在查询分析器里调用时,也能成功。

不明白什么原因。
大家帮帮忙,帮俺看看
...全文
374 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongjy001 2003-11-26
  • 打赏
  • 举报
回复
干脆再写一个存储过程 用来循环调用这些存储过程吧
就不用在程序里面循环调用了 也不容易出错
tristsesame 2003-11-26
  • 打赏
  • 举报
回复
to zjcxc
呵,刚看了你的贴子,学到了不少。
多谢了。

不过不适用于我这次所要做的数据的升级

因为表名,表结构,表的列名都改了,
有的表多了几项,有的表少了几项
还有的老的数据日期是字符型的等等。

所以我是对每个表都写了一个存储过程来实现的。
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
建议参考:

数据迁移
http://expert.csdn.net/Expert/topic/2403/2403537.xml?temp=.1308863
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
数据升级?
tristsesame 2003-11-26
  • 打赏
  • 举报
回复
to w_rose

我是在做数据库数据的转换。
是整个系统升级,
在做这升级时,数据库应该停止其它的工作。

不知你有什么好的建议。
怎么才能保护系统的运行状态
还有什么才是好的设计呢。
为什么说是“轻率”呢?
欢迎指点一二
w_rose 2003-11-26
  • 打赏
  • 举报
回复
竟然有“insert table1 select table2”这样的代码?技术上的“轻率病”,不知道好好保护一下系统的运行状态。好的设计,在数据有1万条与1000万条时都能稳定地运行。
tristsesame 2003-11-25
  • 打赏
  • 举报
回复
刚才设置了一下
commandTimeOut=0

再把那个存储过程放到循环中间来执行。

可以正常运行了。

虽然是超时的问题,
但是放在把这存储过程放在最后一个,
或者程序里只运行这么一个存储过程,
都能成功。

觉得有些奇怪,
tristsesame 2003-11-25
  • 打赏
  • 举报
回复
发觉挺奇怪的.

我把那个存储过程放在循环的最后一个来运行,
倒是可以运行成功。

那是一个insert table1 select table2
的存储过程.
大概五万多条吧,不到一分钟.

如果是超时的问题,为什么放在最后运行,就可以成功了.

有点困惑。
txlicenhe 2003-11-25
  • 打赏
  • 举报
回复

超时:
1:企业管理器->服务器->属性->连接->查询超时(改为0或一个较大的数)
2:ADO的连接超时属性connectiontimeout 设大点.
3:ADO的CommandTimeout设大点

22,300

社区成员

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

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