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. 使用bind提供域名解析服务

  2. Android Studio 调试快捷键

    一直在用微软的东西,用 Android Studio 开发还是太坑了.网上很多人说调试快捷竟然都是错的,不知道是不是不同版本不一样. Android Studio 3.2 快捷键如下: F7:进入当前 ...

  3. zabbix批量添加被监控windows客户端

    由于公司大部分用的是windows服务器,大概有50多台.如果是一台一台添加的话很是麻烦,如果数量更多的话那工作量可想而知.所以网络管理员通常都是非常懒的. 环境:公司虽是域环境,但是除了几台域服务器 ...

  4. js 获取url中的参数 修改url 参数 移除url参数

    js 获取url中的参数 修改url 参数 移除url参数 var jsUrlHelper = { getUrlParam : function(url, ref) { var str = " ...

  5. 使用starUML画顺序图

    https://blog.csdn.net/gary0917/article/details/79968762

  6. js通过查看屏幕大小,更改其他css属性

    首先,我们要知道如何得到屏幕的相关数据. <html><head><title>获取当前对象大小以及屏幕分辨率等</title><body> ...

  7. consul分布式集群搭建

    环境准备 三台机器: vm-a    10.200.110.90    centos7vm-b    10.200.110.91    centos7vm-c    10.200.110.93     ...

  8. Java文件File类学习总结

    java.io.File类 代表文件和目录,在开发中,读取文件.生成文件.删除文件.修改文件的属性都会用到该类. 常见构造方法: public File(String pathName){} 以pat ...

  9. Python【每日一问】13

    问:请简述一下python的GIL 答:GIL 锁,全局解释器锁,仅在CPython解释器中,作用就是,限制多线程同时执行,保证同一时间内只有一个线程在执行.

  10. mysql之工具的使用总结(mac版本)

    13.mysql Mac终端操作 12.MySql在Mac上的安装与配置详解: 11.mac下安装mysql5.7.18,连接出现Access denied for user 'root'@'loca ...