当尝试运行此查询时,我的假设是 PostgreSQL 将在 id=0 且初始 counter=0 的行上运行更新两次,最终计数器=11,但它实际上只运行一次并导致 counter=6 。
有人可以帮忙找出原因吗?我花了很多时间试图解决这个问题,但似乎无法弄清楚为什么会这样。
with duplicatedids as
((select 0 as idx, 6 as v) union
(select 1 as idx, 5 as v))
update verify_seq_update
set counter = counter + duplicatedids.v
from duplicatedids
where verify_seq_update.id <= duplicatedids.idx ;
Run Code Online (Sandbox Code Playgroud) 我的大多数 SQL Server 都使用 2016 SP2。安全小组已确定我需要应用更高版本的安全更新,由于今年 SP2 不再受支持,我计划将其修补到 SP3。
问题是我从未真正修补过 SQL Server,并且想知道应用该服务包时应遵循什么好的流程。我在网上看到了一些,大致相同,但只是需要一些关于最佳方法的意见。
通过在线查看这些流程,我遇到的一些问题是:
我在 Windows Server 2019(1809 版)上安装了 SQL Server 2019 Express Edition (CU8),并且我的所有查询都NoParallelPlansInDesktopOrExpressEdition
在NoparallelPlanReason
属性中进行了串行。
是不是 Express Edition 永远不会并行?我在 Microsoft 文档中找不到任何关于此的信息。
sql-server parallelism sql-server-express windows-server-2019
由于 SQL Server 版本过时,我必须使用服务器端跟踪来收集一些信息,但如果我尝试实现它,则会收到错误Filters with the same event column ID must be grouped together
。我的代码:
exec sp_trace_setfilter 2, 10, 0, 7, N'SQL Server Profiler%'
exec sp_trace_setfilter 2, 10, 0, 7, N'DatabaseMail%'
exec sp_trace_setfilter 2, 10, 0, 7, N'SQLAgent%'
Run Code Online (Sandbox Code Playgroud)
sp_trace_setfilter 1, 10, 0, 6, N'SQLT%';
sp_trace_setfilter 1, 10, 0, 6, N'MS%';
Run Code Online (Sandbox Code Playgroud)
通常它可能是显而易见的事情,但我不知道为什么它不起作用(它不是分号)。
你们中有人有想法吗?