Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 如何处理经常插入的表中的数据_Sql Server_Triggers_Database Deadlocks - Fatal编程技术网

Sql server 如何处理经常插入的表中的数据

Sql server 如何处理经常插入的表中的数据,sql-server,triggers,database-deadlocks,Sql Server,Triggers,Database Deadlocks,我有一个表dbo.RawMessage,它允许另一个系统频繁(每秒插入2条记录)插入数据 我需要处理RawMessage中的数据,并将处理后的数据放入dbo.ProcessedMessage中 因为处理逻辑不是很完整,所以我的方法是在RawMessage表中添加一个insert触发器,但有时会出现死锁 我正在使用SQLServerExpress 我的问题是: 1.这是stuipid方法吗? 2.如果没有,如何改进? 3.如果是,请指导我优雅的方法通常,我们尝试引导应用程序/用户远离插入原始数据-

我有一个表dbo.RawMessage,它允许另一个系统频繁(每秒插入2条记录)插入数据

我需要处理RawMessage中的数据,并将处理后的数据放入dbo.ProcessedMessage中

因为处理逻辑不是很完整,所以我的方法是在RawMessage表中添加一个insert触发器,但有时会出现死锁

我正在使用SQLServerExpress

我的问题是: 1.这是stuipid方法吗? 2.如果没有,如何改进?
3.如果是,请指导我优雅的方法

通常,我们尝试引导应用程序/用户远离
插入原始数据->触发处理->插入已处理的
方法,而转向类似
执行处理(原始数据)->插入已处理的
方法。单凭这一点就可以解决死锁问题,这与触发器处理过程中实际发生的情况有很大关系。忘记触摸dbo.RawMessage。这部分已经修复。你能解释一下死锁的原因吗?因为我不认为这是显而易见的!我理解,当您在dbo.RawMessage表中插入时,会在dbo.RawMessage上获取X锁,并且由于触发器,会在dbo.ProcessedMessage表上获取X锁,但这本身并不能证明死锁是正确的,或者是这样吗?通常我们会尝试引导应用程序/用户远离
INSERT raw data->Trigger processing->INSERT Processed
方法,而转向
EXEC spProcessing(raw data)->INSERT Processed
方法。单凭这一点就可以解决死锁问题,这与触发器处理过程中实际发生的情况有很大关系。忘记触摸dbo.RawMessage。这部分已经修复。你能解释一下死锁的原因吗?因为我不认为这是显而易见的!我知道,当您插入dbo.RawMessage表时,会在dbo.RawMessage和dbo.ProcessedMessage表上(由于触发器)上获取X锁,但这本身并不能证明死锁是正确的,还是正确的?