Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 多线程导致通过存储过程执行的Insert语句出现间歇性故障_Sql Server 2008 - Fatal编程技术网

Sql server 2008 多线程导致通过存储过程执行的Insert语句出现间歇性故障

Sql server 2008 多线程导致通过存储过程执行的Insert语句出现间歇性故障,sql-server-2008,Sql Server 2008,您好,我正在从.net代码调用一个存储过程。存储过程正在根据从.net代码发送的参数计算某些值。在计算了某些值之后,在存储过程的末尾将对同一个表执行三条Insert语句。我发现这些insert语句有时不会在表中插入记录。这很奇怪,因为我已经彻底检查了存储过程是否被正确调用以及参数是否被发送。此外,当只有一个线程运行时,问题不会出现。只有在我运行9个并行访问同一存储过程的多线程的情况下 请建议是否需要检查某些设置或缺少某些设置 我怀疑可能会出现僵局情况并阻止插入。但我不确定。我还检查了表索引中的a

您好,我正在从.net代码调用一个存储过程。存储过程正在根据从.net代码发送的参数计算某些值。在计算了某些值之后,在存储过程的末尾将对同一个表执行三条Insert语句。我发现这些insert语句有时不会在表中插入记录。这很奇怪,因为我已经彻底检查了存储过程是否被正确调用以及参数是否被发送。此外,当只有一个线程运行时,问题不会出现。只有在我运行9个并行访问同一存储过程的多线程的情况下

请建议是否需要检查某些设置或缺少某些设置


我怀疑可能会出现僵局情况并阻止插入。但我不确定。我还检查了表索引中的allow_row_锁和allow_page_锁,它们被设置为“ON”

我想说,您的代码正在生成要插入的相同值,因此违反了表的约束


表中是否有主键或唯一键?可能是表中的某些签入触发器导致了这种情况?

Hi George我有一个Pkey不能为NULL,应该是唯一的。。每次调用insert时,我都使用一个函数生成PKey。。创建函数[Function1](@inValue[nvarchar](4000))返回[nvarchar](16),并以调用方的身份执行,以Function1('001')的形式从insert语句调用函数。每次都应生成唯一的16位nvarchar。。您认为这可能会导致任何问题吗?嗨,苏拉夫,我不知道生成PKEY的函数背后的逻辑,但我肯定会怀疑这是导致您出现问题的原因。如果它产生不同的唯一结果,这意味着你在里面使用了某种随机化。它与系统的时间有关吗?如果是这样,您应该在生成唯一响应之前添加一些延迟,因为完全有可能在同一时间执行函数。如果它与其他事物有关(如普通随机),那么它本身就是危险的。嗨,乔治,谢谢你的输入。我还在检查PKey字段。我也觉得这个PKey是问题的根源。但仍在测试同样的问题,并尝试纠正它的方法。解决后将再次发布。非常感谢。:)对所以问题终于解决了。我改变了生成唯一PKey的逻辑。它解决了这个问题。虽然我们无法深入了解早期逻辑不起作用的原因,但调整它可以得到预期的结果。非常感谢。:)如果我能看到你用来生成PK的代码,我会尝试一下,只是为了好玩:)无论如何,很高兴能帮上忙!