欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ssms2014和ssms2016版本错误定位的区别

程序员文章站 2022-04-29 13:57:29
偶尔对比起2016以下的版本(比如ssms2014),ssms2016有一个小地方有区别。就是报错的行号有区别 举个例子,下面同样的语句在ssms2014和ssms2016里面运行。就是如下的效果 显而易见,这里的行9和 xml 变量的定义都是有问题的。所以ssms2014里面直接给出 这样的提示错 ......

偶尔对比起2016以下的版本(比如ssms2014),ssms2016有一个小地方有区别。就是报错的行号有区别

举个例子,下面同样的语句在ssms2014和ssms2016里面运行。就是如下的效果

 1 CREATE PROCEDURE T111
 2 AS 
 3 SELECT GETDATE()
 4 GO
 5 
 6 
 7 CREATE PROCEDURE T112
 8 AS 
 9 SELECT GETDATE() AS 
10 GO
11 
12 
13 
14 
15 DECLARE @xml = '
16 <Root>
17     <Nr></Nr>
18     <T>
19 </Root>
20 '

显而易见,这里的行9和 xml 变量的定义都是有问题的。所以ssms2014里面直接给出 

消息 102,级别 15,状态 1,过程 T112,第 9 行
“AS”附近有语法错误。
消息 102,级别 15,状态 1,第 15 行
“=”附近有语法错误。

这样的提示错误,完全没有问题。直接双击666就可以定位到错误的位置。

到了ssms2016的版本,报错的信息是这样的

消息 102,级别 15,状态 1,过程 T112,行 5 [批起始行 4]
“AS”附近有语法错误。
消息 102,级别 15,状态 1,第 15 行
“=”附近有语法错误。

注意第一行 

消息 102,级别 15,状态 1,过程 T112,行 5 [批起始行 4] 这里,是定位到本批次的行。并不是整个查询页面所在的行。

并且看回第二个错误消息,也是定位到行15,也就是说,针对变量的定义显示的方式不变,变化的是跟go有关的存储过程定位。
怎么说呢。这个变化感觉一半一半吧,虽然都是可以双击定位到具体位置。

虽然只是一个小小的区别。但是也跟大家分享一下嘛~