首页 > 解决方案 > T-SQL insert into 有时无法随机添加到表中

问题描述

所以我有两个表,记录(输入 ID = 主键)和任务注释(输入 ID,任务注释:无主键)。

曾经有一个存储过程会添加到记录表中,获取生成的主 ID,然后将该 ID 与任务注释文本一起添加到 TaskNotes 表中。

最近,出现了一个问题,即 sproc 似乎运行了一半,添加了记录,但没有运行任务注释条目。

此后,我拆分为一个 AddRecord 存储过程和一个 AddTaskNotes 存储过程,它们是从 C# 应用程序调用的。

这与以前的工作方式类似,但是,AddTaskNotes 仍然不会随机运行。

我认为问题在于 TaskNotes 表的锁定。

有没有人经历过这种情况,可以让我知道它是如何解决的?

当前比率约为每 400 个记录条目有 1 个失败的任务笔记。

这是 AddRecord 语句;

 INSERT  INTO Time.Records
                        ( TeamID ,
                          UserID ,
                          TimeIN ,
                          TimeOUT 
                        )
                VALUES  ( @TeamID ,  @UserID ,  @TimeIN , @TimeOUT );
                

                return SCOPE_IDENTITY();

这是 AddTaskNotes 语句;

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    INSERT INTO Time.TaskNotes ( InputID, TaskNotes )
    VALUES  ( @InputID,  @TaskNotes   );
END

标签: c#sql-servertsqlsqltransaction

解决方案


推荐阅读