- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我之前问过一个关于如何执行 PRINT
的问题,以便在脚本的其余部分仍在运行时立即提供输出(请参阅: How to see progress of running SQL stored procedures? )。简单的答案是使用:
RAISERROR ('My message', 0, 1) WITH NOWAIT
但是,我注意到返回的输出并不总是立即的,特别是当它返回大量结果时。作为一个简单的实验,请考虑以下脚本:
DECLARE @count INT
SET @count = 1
WHILE @count <= 5000
BEGIN
RAISERROR ('Message %d', 0, 1, @count) WITH NOWAIT
WAITFOR DELAY '00:00:00.01'
SET @count = @count + 1
END
上面的脚本将输出 5000 行文本。如果运行该脚本,您会注意到:
这意味着在前 500 行之后,RAISERROR WITH NOWAIT
不再按预期工作,并且会给我带来问题,因为我想查看长时间运行的脚本的进度。
所以我的问题:有什么方法可以禁用这种“批量”行为并使其始终立即返回?
<小时/>编辑:我正在使用 SSMS (SQL Server Management Studio) 运行上述脚本。它似乎会影响所有版本(SSMS 和 SQL Server),并且输出设置为“结果到文本”还是“结果到网格”没有区别。
编辑:显然,这种批处理行为发生在 500 行之后,无论有多少字节。因此,我相应地更新了上面的问题。
编辑:感谢Fredou指出这是 SSMS 的问题,而 LinqPad 等第三方工具不会出现此问题.
但是,我发现当输出中有表结果时,LinqPad 也不会立即输出。例如,考虑以下代码:
RAISERROR ('You should see this immediately', 0, 1) WITH NOWAIT
SELECT * FROM master.sys.databases
RAISERROR ('You should see this immediately too, along with a table above.', 0, 1) WITH NOWAIT
WAITFOR DELAY '00:00:05'
RAISERROR ('You should see this 5 seconds later...', 0, 1) WITH NOWAIT
当您在 LinqPad 中运行上述脚本时,仅立即输出第一行。剩下的5秒后才会输出...
那么,有人知道 SSMS 的一个很好的轻量级替代方案吗?它是免费的,不需要安装,并且可以与 RAISERROR WITH NOWAIT 的立即输出与表结果混合使用?
最佳答案
关于sql - RAISERROR AND NOWAIT 不是那么直接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824742/
1、UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务。如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁,如果查询的当前数据已在事务中,已加锁。但返回异常信息:
我使用 RAISERROR 从存储过程中生成进度输出而不是使用 PRINT,以避免 PRINT 对输出进行缓冲。现在我发现 RAISERROR 将在 500 次打印后开始缓冲。有没有办法解决这种行为?
我之前问过一个关于如何执行 PRINT 的问题,以便在脚本的其余部分仍在运行时立即提供输出(请参阅: How to see progress of running SQL stored procedu
在我的 Rails 4 应用程序中,我对 Postgres 9.4 数据库进行了以下查询: @chosen_opportunity = Opportunity.find_by_sql( " UPD
我有 3 个表: 架构: 例如,我有这样的数据: 1> select id, iddep, idservice from transactions where id = 22 2> go id
pl/sql 中带有 SKIP 锁定的游标和 nowait 的区别? 最佳答案 我认为我找到的这张图片是描述差异的最好例子 Detailed Explanation 关于sql - SKIP 锁定和
在这种情况下,我们需要在游标中使用for update nowait。 最佳答案 使用for update nowait将导致行繁忙并获得锁,直到执行提交或回滚为止。 任何其他尝试获取锁的 sessi
我杀死了一个正在更新表的脚本。现在,当我重新运行脚本时, ORA-00054: resource busy and acquire with NOWAIT specified 我认为 table 被锁
为什么我在更新表时会收到此数据库错误? ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified or t
我有几个 T-SQL 存储过程,我在其中使用 Severity 参数为 0 的 RAISERROR 将进度消息打印到输出窗口。我已经在使用 WITH NOWAIT 来确保立即打印消息。 但是,无论我将
文档说(强调我的): FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE and FOR KEY SHARE are locking clauses; they affe
我正在尝试使用可能的参数最小化某些函数 P做粒子群优化。你需要知道的是,这个过程需要为不同的索引计算一个特定的函数(我称之为 foo ) i (每个索引都链接到一组参数 P )。 foo的时间花在每个
对于 Oracle 数据库,以下程序将仅针对某些线程抛出 SQL 异常。为什么要将 resultSetConcurrency 从 CONCUR_UPDATABLE 降级为 CONCUR_READ_ON
查看文档here ,以下结构定义明确: #pragma omp parallel //Line 1 { #pragma omp for nowait //Line 3
我正在研究 OpenMP,遇到了以下示例: #pragma omp parallel shared(n,a,b,c,d,sum) private(i) { #pragma omp for no
我正在使用 Hibernate 3.6.10FINAL,我无法为 SQLServer2008 生成 nowait 命令。我曾尝试使用这两种方言(“SQLServer2008Dialect”和“SQLS
是否可以在 Hibernate 中执行 COMMIT WRITE BATCH NOWAIT? 最佳答案 我没有进行广泛的搜索,但找不到任何证据表明您可以在 JDBC 驱动程序级别访问此功能。 这让您可
我有一张 table tab1 (t_id, status)和表tab2 (id, t_id, status)在哪里t_id.tab2有外键引用 tab1.t_id . 假设 Oracle sessi
我已经坚持了几天了,但仍然不明白为什么: 我需要更新我的 Oracle 数据库中的记录,在执行更新查询之前,我想用“SELECT x FOR UPDATE NOWAIT”锁定数据,但是在调用 Exec
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait
我是一名优秀的程序员,十分优秀!