找回密码
 立即注册

QQ登录

只需一步,快速开始

guoqp

银牌会员

243

主题

912

帖子

2225

积分

银牌会员

积分
2225

时代开发者征文活动

guoqp
银牌会员   /  发表于:2024-1-18 09:29  /   查看:2147  /  回复:3
本帖最后由 guoqp 于 2024-1-18 11:20 编辑

SQL是这样的

update 定额工时数据表_中石油版
        set
        增补工时 = 0
        where 年度 = @年度 and 项目编号 = @项目编号
        update 定额工时数据表_中石油版
        set
        增补工时 = case when @增补 = 0 then 0 else isnull((select 工时*定额工时数据表_中石油版.单位数量 from 定额字典表中石油版 where 专业 = 定额工时数据表_中石油版.专业 and 定额项 = 定额工时数据表_中石油版.定额项 and 阶段 like '%初步%'),0) end
        where 年度 = @年度 and 项目编号 = @项目编号 and 设计阶段 like '%施工%'
        and 定额项 not in(select 定额项 from 定额工时数据表_中石油版 where 年度 = @年度 and 项目编号 = @项目编号 and 设计阶段 like '%初步%')


我用SELECT加入上述WHERE条件查看数据结果为空,也就是没有符合更新条件的数据
上边这个SQL我在SQL管理器中执行不报错,只显示影响0行,但活字格这边执行就报以下错误提示,日志也查了
错误码: 500信息: Msg -2, Level 11, State 0, Line 0\nTimeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.





以下是本地执行后出错的截图



最后我改为使用存储过程,问题解决了,经过分析应该是活字格这边有什么机制,因为即使是存储过程,在SQL管理器执行也需要差不多十秒左右才能完成

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
robert
金牌服务用户   /  发表于:2024-1-18 14:08:02
沙发
执行超时时间默认0表示使用数据库默认的超时设置。把这个设置改大,例如100秒试试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-1-18 17:47:03
板凳
感谢大佬的支持。
您参考下设置下执行 SQL 命令的超时时间看能否解决您的问题呢?
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-2-29 08:44:03
地板
感谢大佬的分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部