0

別のプロシージャで名前付きトランザクションをチェックして、他の誰かによって実行されていないことを確認する必要があります。

しかし、この質問では、システム手順を活用しようとしています

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
4

1 に答える 1

1

を呼び出すためのプロキシ テーブル ラッパーを作成してから実行することもできますが、sp_transactionsこれはselect * from <proxy> / select @@rowcountおそらく、必要なものに対して少し劇的/やり過ぎです。

代わりに、sp_transactions(HINT: it pulls transaction data from master..systransactions) のソース コードを見て、知りたいことを正確に提供する独自のコードを作成することをお勧めします。

于 2017-07-14T17:01:32.460 に答える