SQL Server 2008 Enterprise를 사용하고 있습니다. 같은 시간에 여러 스레드에 의해 실행되는 경우이 저장 프로 시저가 교착 상태를 일으키는 지 궁금합니다. 또 다른 질문은 - 스토어드 프로 시저 내에서 트랜잭션 시작 및 종료를 정의하거나 클라이언트 코드 (예 : ADO.Net 코드)에서 시작 및 종료 트랜잭션을 정의하는 것이 가장 좋습니다. 사전에그런 저장 프로 시저가 교착 상태를 유발합니까?
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
덕분에,
이다? 또한 @@ Identity는 피해야합니다. SCOPE_IDENTIY 사용 –
예, 현재 레거시 코드의 일부 문제를 분석하고 있으며이 저장 프로 시저로 인해 교착 상태가 발생했는지 분석해야합니다. 내 원래 질문에 대한 아이디어 나 의견이 있으십니까? – George2
"@@ 신원은 피해야합니다"- 이유는 무엇입니까? – George2