2011-03-07 45 views
0

我在从多台机器(超过5台机器)向SQL表插入记录时遇到死锁情况。我同时在多台机器上运行SP并陷入僵局。从多台机器插入到sql server表中时出现死锁

create proc InsertDocuments (@folderId int, @entryIdTable EntryIdTable readonly) 
    begin tran 
    insert into [transaction] (transaction_date) values (CURRENT_TIMESTAMP); 

    select @transactionId = SCOPE_IDENTITY(); 

    insert into document with (TABLOCK) (entry_id, transaction_id) select entry_id, @transactionId from @entryIdTable ; 

    insert into folder_document with (TABLOCK) (source_folder_id, document_id) select @folderId , document_id from document where transaction_id = @transactionId; 
    commit 

文档表具有主键document_id,它也是标识列。 Transaction表中的Transaction_id也是标识列。 EntryIdTable是用户定义的表类型。

任何输入将不胜感激。


Bibek Dawadi

+0

EntryIDTable可能有多达10000行。 – Bikswan 2011-03-07 23:44:40

+0

我肯定会接受答案,如果提供的是我可以接受的。是不是尼克? – Bikswan 2011-03-08 16:37:12

回答