Я использую SQL Server 2008 Enterprise. Я пробовал, чтобы если я установил, что журнал транзакций SQL Server когда-либо увеличивался для связанной базы данных (без параметров резервного копирования), тогда один оператор удаления этой хранимой процедуры вызовет тупик, если выполняется несколькими потоками одновременно? Есть идеи, почему?
Для оператора удаления Param1 - это столбец таблицы FooTable, Param1 - это внешний ключ другой таблицы (относится к другому столбцу кластеризованного индекса первичного ключа другой таблицы). Для самой таблицы FooTable нет индекса Param1. В FooTable есть еще один столбец, который используется в качестве кластеризованного первичного ключа, но не столбец Param1.
create PROCEDURE [dbo].[FooProc]
(
@Param1 int
,@Param2 int
,@Param3 int
)
AS
DELETE FooTable WHERE Param1 = @Param1
INSERT INTO FooTable
(
Param1
,Param2
,Param3
)
VALUES
(
@Param1
,@Param2
,@Param3
)
DECLARE @ID bigint
SET @ID = ISNULL(@@Identity,-1)
IF @ID > 0
BEGIN
SELECT IdentityStr FROM FooTable WHERE ID = @ID
END