AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 314145
Accepted
Dominique
Dominique
Asked: 2022-07-08 00:19:49 +0800 CST2022-07-08 00:19:49 +0800 CST 2022-07-08 00:19:49 +0800 CST

此 SQL 请求何时产生结果?

  • 772

我正在开发一个 SQL 服务器数据库,其中包含订单和机器,执行这些订单。一台机器不能同时分配一个以上的活动订单。换句话说:这个 SQL 请求永远不会产生结果:

SELECT MachineId
  FROM Orders
  WHERE (Orders.Status=1)
  GROUP BY MachineId
  HAVING COUNT(Id)>1

我在 Microsoft SQL Server Management Studio 环境中打开了这个 SQL 请求,每次按F5时,我确实看不到任何结果。

但是,我确信 SQL 查询在某些时候确实会产生结果,并且我对那些时间以及那个时候该查询的结果很感兴趣。

有人知道我如何找到这个吗?(“归档日志”标签只是一个想法)

提前致谢

sql-server scheduled-tasks
  • 2 2 个回答
  • 1506 Views

2 个回答

  • Voted
  1. Zikato
    2022-07-08T03:10:09+08:002022-07-08T03:10:09+08:00

    我将创建一个唯一过滤索引并跟踪唯一约束违规。它首先防止了错误的数据,并且与定期轮询表不同,您不会错过发生的情况。

    定义是

    CREATE UNIQUE NONCLUSTERED INDEX IX_Orders_StatusPerMachine
    ON dbo.Orders(MachineId) 
    WHERE (Status = 1)
    

    然后我会使用error_reportedExtended 事件来跟踪具体的错误号,它可能是:

    消息 2601
    无法在具有唯一索引 '%.*ls' 的对象 '%.*ls' 中插入重复的键行。重复键值为 %ls。

    并获取一些额外的信息,如,app_name等以找到根本原因。host_nametsql_stack

    我在这里发布有关使用扩展事件调试错误的博客
    https://straightforwardsql.com/posts/investigating-errors-with-extended-events/

    • 10
  2. Best Answer
    Michael Green
    2022-07-08T01:09:51+08:002022-07-08T01:09:51+08:00

    创建一个日志表。将您的查询更改为

    INSERT LoggingTable(...)
    SELECT MachineId, SYSUTCDATETIME()
    ...
    

    根据需要使用 SQL 代理运行此查询。(最短间隔为 1 分钟。)

    问题是您只能看到查询每隔几分钟执行的几毫秒内存在的错误——这只是系统运行时间的一小部分。如果您将时间跟踪添加到订单,您可以看到发生的每一个变化。然后,您可以对此历史记录运行分析查询以检测错误。如果需要,可以将历史记录复制到单独的存档数据库中,并在不再需要时从操作数据库中删除,以保持该数据库的精简。

    • 6

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve