我有一个具有以下结构的表:
CREATE TABLE [dbo].[Photos](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[OriginalUrl] [nvarchar](450) NOT NULL,
[ObjCode] [nvarchar](10) NOT NULL,
[ProviderCode] [int] NOT NULL,
[ImageId] [int] NOT NULL
,其中一个索引是:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Photos_ObjCode_ProvCode_ImageId] ON
[dbo].[Photos]
(
[ObjCode] ASC,
[ProviderCode] ASC,
[ImageId] ASC
)
一般体系结构是:
Web api-负责处理传入请求并返回存储在数据库中的数据,或者在没有数据的情况下将请求发送到队列中
60个处理程序实例正在使用队列,正在处理请求并将数据存储在db中
当处理程序实例尝试插入不应该违反数据唯一性的数据时,我会遇到许多异常。例如,我得到以下错误:
更新条目时发生错误。有关详细信息,请参见内部异常。无法在具有唯一索引“ IX_Photos_ObjCode_ProvCode_ImageId”的对象“ dbo.Photos”中插入重复的键行。重复的键值为(ART345、2625、0)。
当我尝试插入具有不同参数的项目集时,例如“ PKM6778,8976,0”(ObjCode,ProvCode,ImageId)
在调试或使用单个处理程序实例时,不可能重现此错误。日志还显示,所有集合均未包含任何可能违反此索引的项目
堆栈:asp .net core 2.2,EF Core 2.0,MSSQL 2008
答案 0 :(得分:0)
我认为您的处理程序代码中有错误,可能是某些变量不是线程安全的,例如,类级别而不是函数级别。您应该检查您的代码。