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 / 问题 / 268710
Accepted
Oscar
Oscar
Asked: 2020-06-08 23:56:39 +0800 CST2020-06-08 23:56:39 +0800 CST 2020-06-08 23:56:39 +0800 CST

过早退出 T-SQL 中的 while 循环并查看输出

  • 772

我在周末运行了一个带有 CURRENT_TIMESTAMP 条件的 while 循环,问题是我不小心将条件设置为 2020-08-06 而不是 2020-06-08(哎呀)。有没有办法手动退出循环并查看到目前为止的结果?我认为我不可能更改系统时间以使循环存在,因为 SQL 服务器不在本地运行。

t-sql
  • 1 1 个回答
  • 74 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Green
    2020-06-09T03:44:38+08:002020-06-09T03:44:38+08:00

    成功很大程度上取决于结果的存储位置。如果它们被写入普通表,那么您可以简单地查询该表。如果有一个会阻塞新查询的事务打开,请使用 NOLOCK 提示。如果您使用的是快照隔离,我不知道您如何获取开放事务的版本化数据。

    如果所有结果都在临时表中,您将遇到困难。这些表的范围仅限于会话,因此从不同的会话访问它们会很棘手。您可以查看 TempDB 的元数据以找到表的全名并明确查询。不知道行不行,没试过。(我试过了;它不起作用。)

    如果代码通过 SSMS 运行,您可以在不结束会话的情况下停止执行。这将使临时表保持完整并可供会话使用。使用菜单 Query -> Cancel Executing Query 取消(映射到工具栏中的红色方块)。如果有一个开放的交易,该交易将保持开放。您将不得不手动提交或回滚它。

    取消是通过向 SQL Server 发送“注意”消息来实现的。其他客户可能支持也可能不支持。在脚本环境(例如 Powershell、Python)中,如果查询是异步提交的,则可以在原始连接或查询对象上调用“取消”方法(或等效方法)。

    拥有足够高的访问权限,您可以查看磁盘结构。Paul White 在这里写了一个方法。根据已写入的内容,从 DBCC PAGE 转录转储可能需要与重新运行查询一样长的时间。

    如果结果在变量中,您可以将调试器连接到 SQL Server 进程,暂停其执行并进行搜索。祝你好运。如果系统上有其他用户或后台系统活动,则可能很难将您想要的值与所有其他存在的值区分开来。当然,它没有以任何方式记录或支持。不要在共享生产实例上尝试此操作。

    最后,如果您使用的是 SSMS,请查看消息选项卡。您永远不会知道,编写脚本的人可能已经放置了 PRINT 语句来跟踪进度。

    结束循环很容易。从 SSMS 选项卡或 DMV ( sys.dm_exec_sessions 等) 中找到 SPID,然后发出KILL session_id。不幸的是,它将完全结束脚本,丢失局部变量和临时表,并断开目标会话。任何打开的事务都必须回滚,这将大致与事务已经打开、给予或接受的时间一样长。

    • 1

相关问题

  • 如何使用 TSQL 更改 SQL 服务器配置管理器设置?

  • 如何从结果集中获取列名和类型的列表?

  • MS SQL:使用计算值计算其他值

  • 如何判断 SQL Server 数据库是否仍在使用?

  • 实施 PIVOT 查询

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