我看到简单删除后出现间歇性故障。
基本上我有一个包含许多条目的临时说明。每个条目都有一个分类,它是一个查找值。完成此注释后,它将被发送到注释存储库,并且需要删除临时版本。
我无法可靠地复制,但有时,当调用执行删除临时注释的存储过程时,只会删除一些条目。巧合的是(?)留下的条目一直是一种特定的分类类型。
经过多次尝试后,我能够在运行SQL Server Profiler时重现该问题。尽管试图捕获Attention,ErrorLog,EventLog,Exception和Execution Warnings,但结果配置文件并没有显示任何异常。
所涉及的表都不大。事实上,他们是微不足道的。在任何给定时间进入约100-1000,草稿约100,分类9,类别3。
我不相信它应该重要,但为了以防万一,这个存储过程是从实体框架调用的。
有什么想法吗?有关如何进行故障排除的任何想法?我完全不知所措。提前感谢您的帮助。
以下是删除的存储过程:
CREATE PROCEDURE [NoteDraft].[ClearNoteDraft]
@DraftId BIGINT
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM NoteDraft.[Entry]
WHERE DraftId = @DraftId
DELETE FROM NoteDraft.Draft
WHERE Id = @DraftId
END
以下是表格定义(为简洁起见,省略了一些栏目。)
CREATE TABLE [NoteDraft].[Category]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[SortOrder] [int] NULL,
CONSTRAINT [PK_Category]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
CREATE TABLE [NoteDraft].[Classification]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[CategoryId] [int] NOT NULL,
[Name] [varchar](50) NOT NULL,
[SortOrder] [int] NULL,
CONSTRAINT [PK_Classification]
PRIMARY KEY CLUSTERED ([Id] ASC)
)
CREATE TABLE [NoteDraft].[Draft]
(
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[DateModified] [datetime] NOT NULL CONSTRAINT [DF_TestNoteDraft_DateModified] DEFAULT (getdate()),
[AccountNumber] [varchar](30) NULL,
--...10 other biz columns...
CONSTRAINT [PK_Notes]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
CREATE TABLE [NoteDraft].[Entry]
(
[DraftId] [bigint] NOT NULL,
[ClassificationId] [int] NOT NULL,
[Body] [varchar](2100) NULL,
CONSTRAINT [PK_Entry]
PRIMARY KEY CLUSTERED ([DraftId] ASC, [ClassificationId] ASC)
) ON [PRIMARY]
ALTER TABLE [NoteDraft].[Classification] WITH CHECK
ADD CONSTRAINT [FK_Classification_Category]
FOREIGN KEY([CategoryId]) REFERENCES [NoteDraft].[Category] ([Id])
GO
ALTER TABLE [NoteDraft].[Classification] CHECK CONSTRAINT [FK_Classification_Category]
GO
ALTER TABLE [NoteDraft].[Entry] WITH CHECK
ADD CONSTRAINT [FK_Entry_Classification]
FOREIGN KEY([ClassificationId]) REFERENCES [NoteDraft].[Classification] ([Id])
GO
ALTER TABLE [NoteDraft].[Entry] CHECK CONSTRAINT [FK_Entry_Classification]
GO
ALTER TABLE [NoteDraft].[Entry] WITH CHECK
ADD CONSTRAINT [FK_Entry_Draft]
FOREIGN KEY([DraftId]) REFERENCES [NoteDraft].[Draft] ([Id])
GO
ALTER TABLE [NoteDraft].[Entry] CHECK CONSTRAINT [FK_Entry_Draft]
GO
答案 0 :(得分:0)
就像这样简单的事情一样,答案并不是我在寻找的地方。
事实证明,页面上有一个事件监听器,它会在删除后重新插入记录。
仍无法弄清楚为什么听众在跑,但至少我知道发生了什么。