sql - Sql Server:更新过程中的查询即使在优化后也不起作用
问题描述
我将尝试详细解释这个问题:
我面临一个奇怪的情况,我的程序偶尔会在 UPDATE 查询中停止。这种情况很少像千分之一的记录那样发生,这让我一无所知。
此外,这个问题不会发生在 DEV 中,它只发生在 PROD 中。PROD 环境不允许任何查询分析,它不允许我触发任何命令,如 DBCC 等。
查询如下所示 -
CREATE proc [dbo].[Usp_SaveTaskSME]
(
@taskDlaIdSelected int
)
As
Begin
if exists(Select 1 from TaskDla where TaskDLAId = @taskDlaIdSelected)
Begin
declare @RequestId int, @taskid int, @submissionid int
select @RequestId = RequestId, @TaskId = TaskId, @submissionid = SubmissionFileId from SubmissionFileData where TaskDLAId = @taskDlaIdSelected
-------- Mod#1 start -------- **WORKS FINE **
Update Task
Set TaskStatusId = 1
Where TaskId = (Select TaskId from TaskDLA Where TaskDlaId = @taskDlaIdSelected)
-------- Mod#1 Ends
-- MOD #2 : log history of submission file update --- **WORKS FINE**
insert into [dbo].[RequestHistory]
([RequestId],[StatusId],[Description],[StatusChangeBy],[StatusChangeDate],[UpdateType])
values
(@RequestId, 1, 'TaskId #' + cast(@taskid as varchar) + ' set to In Progress', 'usp_SaveTaskSME', Getdate(), 'In Progress')
---- Mod#3 ----- **DOESN'T UPDATES (Sometimes)**
---------------- **THIS IS WHERE QUERY STOPS AT TIMES**
---------------- **SO THIS UPDATE IS NOT FIRED**
Update TaskDla
Set TaskStatusId = 1,
Comments = 'Set to In Progress by System'
Where TaskDLAId =@taskDlaIdSelected;
-- MOD #4 : log history of submission file update
insert into [dbo].[RequestHistory]
([RequestId],[StatusId],[Description],[StatusChangeBy],[StatusChangeDate],[UpdateType])
values
(@RequestId, 1, 'SubmissionFileId #' + cast(@submissionid as varchar) + ' set to In Progress', 'usp_SaveTaskSME', Getdate(), 'In Progress')
Select 1
End
Else
Begin
Select 2
End
SubmissionFileData 表在作为标识的另一列上有一个索引。
到目前为止我尝试过的事情:
我已经在列上创建了一个非聚集索引,这里的条件是TaskDlaId 我还检查了要检查的查询计划,它说更新读取的行数仅为 1,如下所示 -
你们能建议我在这里还能做什么吗?
解决方案
推荐阅读
- http - 通过 https 发出原始请求时,在 Location-header 中获取 http
- reactjs - 在 ReactJS 中使用 .match() - match 不是一个函数?
- javascript - 如何在Javascript中反转嵌套对象
- laravel - Laravel,Vue fetch什么都不返回,但控制台中有数据
- java - 在 Eclipse 中运行 Java 项目时出现“无法启动选择,并且没有最近启动”提示消息
- sql - 如何获取增量值并将其显示在jsp的输入字段中
- c++ - 如何正确退出使用 Boost Log 的程序?
- c++ - 在 ARM 上初始化 uint32x4_t 时出现错误 C2078?
- javascript - 如何在 html/css/js 中呈现跨媒体栏(PS3 UI)
- shopify - 如何在shopify中获取付款方式