我有疑问我正在以win Forms开发小型桌面应用程序。我正在使用SQL CE 3.5 SP1作为数据库。
当我通过几种方法在几张桌子上插入时,我正在使用TansactionScope。当我单独使用这种方法时,我想从数据库连接中使用正常的Transaction。
如果DB的连接现在处于事务范围内,那么无论如何都要检入被调用的方法吗?
将此信息转发给方法的答案将来不太好我们会将SQL Ce的实现更改为普通SQL,然后我不会改变实现,所以这不是个好主意。
我在ADO的每个mthod事务中使用之前的解决方案但是因为外部是错误的事务而且事务实验室没有回滚此事务。所以我决定删除所有ADO事务,然后回滚就可以了,所以我不知道何时可以使用ADO,何时不能...
答案 0 :(得分:2)
我不确定这些是否适用于Compact Edition 3.5,但这与SQL Server的其他版本一样:
XACT_STATE()报告会话的事务状态,指示会话是否具有活动事务,以及事务是否能够提交。它返回三个值:
@@ TRANCOUNT 返回当前连接的活动事务数。
编辑基地不要OP的评论 试试这个问题:
SELECT
*
FROM sys.dm_tran_session_transactions
WHERE session_id=@@SPID
或者这样可以获得更多信息:
SELECT
*
FROM sys.dm_tran_session_transactions s
INNER JOIN sys.dm_tran_active_transactions a On s.transaction_id=a.transaction_id
WHERE s.session_id=@@SPID