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中的常见报错;的更多相关文章

  1. 内置Jetty配置JSP支持过程中的常见报错

    目录 1. 常见报错及解决 1.1 JSP support not configured 1.2 JSTL标签解析 1.3 JSP编译 1.4 JSP实现依赖 1.5 EL表达式支持 2. 小结 1. ...

  2. C语言开发中常见报错的解决方案

    C语言开发中常见报错的解决方案 整理来源于网络,侵权请通知删除.*禁止转载 ---- fatal error C1003: error count exceeds number; stopping c ...

  3. web报表工具FineReport使用中遇到的常见报错及解决办法(二)

    web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...

  4. java常见报错及解决

    Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error  2.Runtime Exception 运行时异常 3.Exception  4.throw 用户自定 ...

  5. HDFS集群常见报错汇总

    HDFS集群常见报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DataXceiver error processing WRITE_BLOCK operation 报 ...

  6. 03:git常见报错解决方法

    1.1 git常见报错解决方法 1.warning: LF will be replaced by CRLF in .idea/workspace.xml. 参考博客:https://www.cnbl ...

  7. JavaScript 调试常见报错以及原因

    JavaScript 调试常见报错以及原因 测试环境 chrome 版本 66.0.3359.170(正式版本) (64 位) TypeError 类型错误 不是操作符所接受的数据类型. //---- ...

  8. Django 连接 MySQL 数据库及常见报错解决

    目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...

  9. rsync 守护进程模式搭建 与常见报错

    守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...

随机推荐

  1. 常识判断-科技-day123

    PS: 在常识中科技是最难的 PS: 20-2w  HZ是人能听到的频率 PS: 物体的熔点和凝固点是一致的 PS: 氮肥如果多了,可能只是长叶子不结果: 磷肥促进开花结果 PS; 病毒是介于生物和非 ...

  2. 2018-2019-2 20175202实验一《Java开发环境的熟悉》实验报告

    2018-2019-2 20175202实验一<Java开发环境的熟悉>实验报告 一.实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA 编辑.编译.运行.调试Jav ...

  3. nis+kerberos 实现服务验证

    1.NIS部分 1.1 简介     NIS(Network Information Service,or Yellow Page or YP) 网络信息服务,由sun公司开发并授权给unix供应商, ...

  4. 【转】计算机信息系统安全保护等级划分准则(GB 17859-1999)

    计算机信息系统安全保护等级划分准则(GB 17859-1999) 概述 计算机信息系统安全保护等级划分准则(GB 17859-1999) 1 范围 本标准规定了计算机系统安全保护能力的五个等级,即: ...

  5. ubuntu ssh

    客户端 Client端生成公钥和密钥 在Ubuntu服务器上安装ssh 安装方法: apt-get install ssh 安装完成后验证是否SSH安装成功 验证方法: 在命令行模式下执行命令:ssh ...

  6. v4l2框架

    参考:https://www.cnblogs.com/tuotuteng/p/4648387.html http://blog.sina.com.cn/s/blog_c91863e60102w65w. ...

  7. 51nod1220 约数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1220 $G(n)=\sum\limits_{i=1}^n\sum\lim ...

  8. spring jpa方法关键字转成sql

    The following table describes the keywords supported for JPA and what a method containing that keywo ...

  9. 洛谷P1040 加分二叉树(树形dp)

    加分二叉树 时间限制: 1 Sec  内存限制: 125 MB提交: 11  解决: 7 题目描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,...,n),其中数字1,2,3,...,n ...

  10. 窗口置顶 - 仿TopWind

    前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...