sql中的常见报错;
1.对于某些写的sql懒得判断的;
SELECT * FROM sys_part WHERE part_no =(SELECT part_no FROM dbo.sys_part) --字查询的结果存在多行
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
对于错误代码:512
SELECT TOP 10 * from sys.messages WHERE message_id =512 --可以查询到一些对于此错误的不同语言描述,不用翻译了;
--对于sql中执行的sql语句记录可以用如下进行查询,不过对于上面的错误内容查询不出来.......:
SELECT TOP 100
ST.text AS '执行的SQL语句',
QS.execution_count AS '执行次数',
QS.total_elapsed_time AS '耗时',
QS.total_logical_reads AS '逻辑读取次数',
QS.total_logical_writes AS '逻辑写入次数',
QS.total_physical_reads AS '物理读取次数',
QS.creation_time AS '执行时间' ,
QS.*
FROM sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE QS.creation_time BETWEEN '2019-03-01 00:00:00' AND '2019-04-02 11:00:00'
ORDER BY
qs.creation_time DESC
2.对于语句没有异常处理的情况,多个sql写在一起抛给服务器会认为是独立的进行处理,如有异常不会终止,如下:
--没有异常捕捉的情况
PRINT 'first'
SELECT 1/0
PRINT 'second'
--执行结果:
first
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
second ----异常之后的语句依然执行了
---具有异常捕捉的,异常之后的语句可以停止执行
BEGIN TRY
PRINT 'first'
SELECT 1/0
PRINT 'second' ---此语句不会执行;
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
--执行结果
first
(0 row(s) affected)
Divide by zero error encountered.
3.对于mssql中事务添加示例,尽量对于连贯的业务,如果要将逻辑写在数据库中的话,还是要采用事务的方式,防止发生异常后,数据错乱,导致问题更加验证;
-------创建需要验证的表及其数据
--CREATE TABLE temp_table
--(
-- id INT IDENTITY(1,1),
-- actymd VARCHAR(10),
-- acthms VARCHAR(10)
--)
--DECLARE @insert INT
--SET @insert=1
--WHILE(@insert <10)
--BEGIN
-- INSERT INTO dbo.temp_table
-- ( actymd, acthms )
-- VALUES (
-- '', -- actymd - varchar(10)
-- '' -- acthms - varchar(10)
-- )
-- SET @insert+=1;
--END
SELECT * FROM dbo.temp_table
--update dbo.temp_table SET actymd ='' --每次验证执行完成,将数据作还原处理
---验证事务的会滚
SET XACT_ABORT ON ---数据库这里也需要开启否则还是徒劳
DECLARE @count INT
DECLARE @indext INT
SELECT @count=COUNT(*) FROM dbo.temp_table(NOLOCK)
SET @indext =1;
BEGIN TRY
WHILE(@indext<@count)
BEGIN
IF(@indext<4) ---如果事务有效果,那么此处的设置导致temp_table只会被更新3行数据
BEGIN
SELECT 'ddd'
UPDATE temp_table SET actymd='tt' WHERE id =@indext
END
ELSE
BEGIN
BEGIN TRAN --此处进行事务执行结果如图1 --此处对应注释执行结果如图2
UPDATE temp_table SET actymd='tt_yichang' WHERE id =@indext
UPDATE temp_table SET actymd='dddddddddddddddddddddddddddd' WHERE id =@indext --此处会执行错误
COMMIT
END
SET @indext+=1;
END
END TRY
BEGIN CATCH
ROLLBACK
SELECT ERROR_MESSAGE(),ERROR_NUMBER(),@indext
END CATCH
--图1 有事务的执行结果
--id actymd acthms
--1 tt
--2 tt
--3 tt
--4
--5
--6
--7
--8
--9
--图2 没有事务的执行结果
--id actymd acthms
--1 tt
--2 tt
--3 tt
--4 tt_yichang
--5
--6
--7
--8
--9
sql中的常见报错;的更多相关文章
- 内置Jetty配置JSP支持过程中的常见报错
目录 1. 常见报错及解决 1.1 JSP support not configured 1.2 JSTL标签解析 1.3 JSP编译 1.4 JSP实现依赖 1.5 EL表达式支持 2. 小结 1. ...
- C语言开发中常见报错的解决方案
C语言开发中常见报错的解决方案 整理来源于网络,侵权请通知删除.*禁止转载 ---- fatal error C1003: error count exceeds number; stopping c ...
- web报表工具FineReport使用中遇到的常见报错及解决办法(二)
web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...
- java常见报错及解决
Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定 ...
- HDFS集群常见报错汇总
HDFS集群常见报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DataXceiver error processing WRITE_BLOCK operation 报 ...
- 03:git常见报错解决方法
1.1 git常见报错解决方法 1.warning: LF will be replaced by CRLF in .idea/workspace.xml. 参考博客:https://www.cnbl ...
- JavaScript 调试常见报错以及原因
JavaScript 调试常见报错以及原因 测试环境 chrome 版本 66.0.3359.170(正式版本) (64 位) TypeError 类型错误 不是操作符所接受的数据类型. //---- ...
- Django 连接 MySQL 数据库及常见报错解决
目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...
- rsync 守护进程模式搭建 与常见报错
守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...
随机推荐
- (转)python爬虫:http请求头部(header)详解
本文根据RFC2616(HTTP/1.1规范),参考 http://www.w3.org/Protocols/rfc2068/rfc2068 http://www.w3.org/Protocols/r ...
- spring事务详解(三)源码详解
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- hanlp 加载远程词库示例
说明 ·目前的实现方式是以远程词库的内容重新构建CustomDictionary.trie,demo主要是为了实现同步远程词库,对性能暂不作考虑,对性能要求要以CustomDictionary.dat ...
- Windows 数字化器类输入设备--笔设备分析(1)(原创)
一.前言: 参考microsoft公司的链接:https://developer.microsoft.com/zh-cn/windows/hardware 将对Windows数字化器类输入设备--笔设 ...
- LBA和CHS转换
磁盘填充,先填满一个柱面之后,再填下一个柱面.LBA是从0开始的. LBA = (C-CS)*HPC*SPT + (H-HS)*SPT + (S-SS) C, H, S: 当前的CHS值 CS, HS ...
- swoole之代码热更新实现 转自https://blog.csdn.net/nep_tune/article/details/81329918
随着swoole的版本迭代更新,已经足够稳定了,在阿里,腾讯,yy等各大公司都有着使用,也有很多游戏圈里的朋友也在使用,这些朋友经常会提到一个问题,每次代码更新还需要停止服务,然后重新启动,来达到更新 ...
- WebService之客户端
创建项目 File→New→Other→Web Services→Web Service Client中输入从服务端得到的wsdl链接: http://localhost:8080/WS_WebSer ...
- 查看局域网内所有IP的方法
1,windows下查看局域网内所有IP的方法: 在MS-DOS命令行输入arp -a 2,Linux下,查看局域网内所有IP的方法: 在命令行输入nmap -sP 172.10.3.0/24
- 【Dubbo源码学习】负载均衡算法(2)-轮询算法的实现
@Overrideprotected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL ur ...
- Winform 界面执行耗时操作--UI卡顿假死问题
UI卡顿假死问题 误区1:使用不同的线程操作UI控件和耗时操作(即,跨线程操作UI控件CheckForIllegalCrossThreadCalls = false;), 注意:此处只是为了记录... ...