別のプロシージャで名前付きトランザクションをチェックして、他の誰かによって実行されていないことを確認する必要があります。
しかし、この質問では、システム手順を活用しようとしています
EXEC sp_transactions 'xid','MyTran1' -- This will return a result if it finds a named transaction called MyTran1
行が返されたかどうかを知りたい... RowsReturned > 1
だから私は次のことをしました
BEGIN TRAN MyTran1 -- named transaction
BEGIN TRAN MyTran2 -- named transaction
実行するとEXEC sp_transactions2行が返されます
実行するとEXEC sp_transactions 'xid','MyTran1'、1行が返されます
今、私は次のようなことをする必要があります
DECLARE @nameTranFound int
SET @nameTranFound = EXEC sp_transactions 'xid','MyTran1'
@@RowCount を使用してみましたが、常に 1 が返されます
EXEC sp_transactions 'xid','Warren1'
SELECT @@RowCount