前天有朋友的一个.net的网站出现问题了,是关于sql server 数据库存储导致的问题,具体问题是一旦这个详情页涉及到200个用户以上就会出现报错,200个以下就没有问题,以下是sql server 数据库修复过程。
今天抽空检查了代码,发现代码里使用的是存储过程只需动态SQL。把.net代码里执行的sql语句手动逐一执行,发现代码是根据m_id查出一个由200多个userid拼接成的字符串,然后传到存储过程的参数里。用id in(@userids)查询数据,测试了一下当userids是几个时是可以执行成功的,但是当超过200个时就会报错。查看了存储过程的定义发现 where 定义最多是1000个字符,而200个id的字符串就会超过1000个字符,从而会被截断,从而导致sql语句执行出错。
我点击存储过程->修改
修改为4000个字符后,点击,就可生效
其实这种存储过程在设计时候就有问题,不应该使用id拼接的方式来构建查询语句,应该使用联合查询或者子查询来完成。
执行存储过程的方法是
exec dbo.proc_Pager "V_test','U_ID',1,20,'','CreateTime desc',' U_ID in (508,1185)';
至此,sql server 数据库存储导致的报错问题已修复,希望出现类似故障的朋友可以参考一下。
随着存储区域网络(SAN)的日益普及,SAN的安全问题日益受到人们的关注。为了保证SAN的高度...
随着存储区域网络(SAN)的日益普及,SAN的安全问题日益受到人们的关注。为了保证SAN的高度...
蓝屏是让拥有笔记本朋友们的一个很头疼的小故障,但是不要紧,今天小编就与大家学习三招...
数据恢复中,我们知道硬盘有很重要的扇区,如MBR、EBR、DBR等,今天华军深圳数据恢复中...
相信很多朋友都遇到过这样一种情况:电脑提示系统内存不足。那么,在遇到这种情况的时候...
操作系统密码破解方法如下: 在电脑断电的情况下打开机箱- 找到主板电池- 断开电池与...
近日客户表示相机借给朋友去旅行,照了不少照片,可是把卡插上电脑却显示格式错误,一张...