我需要检查另一个程序中的命名事务,以确保它没有被其他任何人执行。
但对于这个问题,我正在尝试利用系统程序
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_transactions
则返回2行
如果我运行EXEC sp_transactions 'xid','MyTran1'
- 返回一行
现在我需要做类似
的事情DECLARE @nameTranFound int
SET @nameTranFound = EXEC sp_transactions 'xid','MyTran1'
我尝试使用@@ RowCount,但它总是返回1
EXEC sp_transactions 'xid','Warren1'
SELECT @@RowCount
答案 0 :(得分:1)
虽然你可以创建一个代理表包装器来调用sp_transactions
,然后运行select * from <proxy> / select @@rowcount
......这可能会对你想要的东西有点过分/过度。
相反,我建议您查看sp_transactions
的源代码(提示:它从master..systransactions
提取事务数据)并滚动您自己的代码,提供您想要知道的内容。