小编mne*_*nic的帖子

如何找到导致 SSMS“Msg 8115,Level 16,State 2,Line 1”的行

我在 MS SSMS 中有一个 400 行查询。当我运行它时,我得到:

消息 8115,级别 16,状态 2,第 1 行
将表达式转换为数据类型 int 时出现算术溢出错误。

第 1 行只是“Select”语句。我可以在 SSMS 中启用什么功能来让我更接近出现错误的行吗?

sql-server ssms errors

3
推荐指数
1
解决办法
931
查看次数

我可以在 INSERT 中使用 UPDATE 的 OUTPUT 吗?

我想在我的应用程序的“SystemSettings”表中添加一条记录,并使用 UPDATE 中的值设置 PK 值。PK 值来自“TS_LASTIDS”表,其中包含此应用程序 (MicroFocus SBM) 中每个表的最大 PK 值。我需要增加该表中的“TS_LASTID”列,并在将新记录插入“SystemSettings”表时使用新值作为 PK。

Insert Into
   ts_SystemSettings ( ts_Id, ts_Name, ts_LongValue)

Values (
   ( -- ******************** This subquery updates the PK in TS_LASTIDS and outputs the new value
      Update
         ts_LastIds
      Set
         ts_LastId=ts_LastId+1
      Output
         INSERTED.ts_LastId
      Where
         ts_Name = 'SystemSettings'
   ) ,  -- ******************** 
   'NSLastChangeId' ,
   1 ,
) ;
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚语法。这是 MS SQL Server 2012。

sql-server insert update output-clause

2
推荐指数
1
解决办法
153
查看次数

SQL Server -- 重复(几乎)相同子查询的更有效替代方法

我需要提高 WHERE 子句中多个子查询的效率。上下文是现有产品的报告生成器。 我可以提供的唯一输入是 WHERE 子句。我有 3 个几乎相同的子查询,它们之间只有 1 个不同。我需要验证至少有 1 条记录符合每个条件。

这是查询的要点

Where
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='X')
  AND
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='Y')
  AND
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='Z')
Run Code Online (Sandbox Code Playgroud)

3 个子查询中的每一个中的“选择”都是相同的。它确实加入并在它的 Where 子句中有其他字段,包括对来自外部查询的 PK 的引用:我只显示不同之处。

t1 中大约有 50 万条记录。上面的查询现在已经运行了 30 多分钟。我需要把它缩短到 30 秒。

我的选择非常有限——没有 DECLARE,没有临时表,没有“OVER”。

sql-server subquery where

1
推荐指数
1
解决办法
2599
查看次数

标签 统计

sql-server ×3

errors ×1

insert ×1

output-clause ×1

ssms ×1

subquery ×1

update ×1

where ×1