0
SQL Server 2008 SP3 (10.0.5500)을 사용하고 있습니다. 롤백 트랜잭션과 관련하여 몇 가지 문제가 있습니다. 우선 뭔가 알고 있어야합니다. SET XACT_ABORT ON이 작성 절차에서 작동하지 않음
USE [MYDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET XACT_ABORT ON
GO
If Exists(Select * From Sys.Objects Where [object_id]=Object_Id(N'[Members].[MyProc]') And ObjectProperty([object_id], N'IsProcedure') = 1)
Begin
Drop Procedure [Members].[MyProc]
Print 'Procedure [Members].[MyProc] Dropped!'
End
GO
CREATE PROCEDURE [Members].[MyProc](
....
)
AS
BEGIN
BEGIN TRANSACTION [MyProcCHK]
....
COMMIT TRANSACTION [MyProcCHK]
END
GO
그리고 실행이 스크립트 후
, 나는에서 절차를 확인하십시오 :MyDB ->Programmability->StoredProcedures
다음이 스크립트가 표시됩니다
[Members].[MyProc]
을 수정하기 위해 클릭
USE [MYDB]
GO
/****** Object: StoredProcedure ... ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [Members].[MyProc](
....
)
AS
BEGIN
BEGIN TRANSACTION [MyProcCHK]
....
COMMIT TRANSACTION [MyProcCHK]
END
GO
을 어디 SET XACT_ABORT ON
인이 내 생성 절차 스크립트입니다? 왜 여기에 표시되지 않습니까? 저장 프로 시저에서 롤백 트랜잭션에 몇 가지 문제가 있기 때문에 나는 결코 SET XACT_ABORT ON
이 저장되지 않았다고 생각합니다. 내가 맞습니까? 그렇다면 해결책은 무엇입니까? 저장 프로 시저에 SET XACT_ABORT ON
을 사용할 수 없습니까? 또는 내 잘못은 어디에 있습니까? 내가 그랬던 것처럼 예,
감사 내부
set xact_abort on
을 언급해야하고, 단지 내부의 문은 충분하다, 외부 넣을 필요가 없다? –은 create 문 안에 언급하는 것으로 충분합니다. 밖에서 언급 할 필요가 없다. – praveen