c# - 如何检查 SqlCommand 是否在事务中
问题描述
SqlCommand
我有一个使用异常处理程序执行的标准例程。但是,如果在此例程中引发异常,那么如果在事务中调用此标准例程,我将无法进行回滚。那么如何检查这个标准例程是否放置在事务中?什么是正确的方法?到目前为止,我已经google了很多...
我是否必须在我的异常处理程序中为强制整个事务回滚的标准例程抛出一个新异常?
我的标准例程如下:
try
using (SqlConnection con = new SqlConnection(dbCon))
{
using (SqlCommand cmd = new SqlCommand(SQL, con))
{
con.Open();
cmd.CommandTimeout = 600;
cmd.ExecuteScalar();
}
}
}
catch (Exception ex)
{
// do some stuff here
maybe check for existence in a transaction here
}
我的整体交易如下所示:
using (SqlConnection con = new SqlConnection(dbCon))
{
con.Open();
string TransactionName = "TransactionName";
using (SqlTransaction sqlTransaction = con.BeginTransaction(TransactionName))
{
try
{
// do some stuff here and call the standard routine here several times...
}
catch (Exception vDBException)
{
DB.getInstance().RollbackTransaction(sqlTransaction, TransactionName);
}
}
}
我试图利用select @@trancount
没有成功。
我也尝试sys.sysprocesses
从 SQL Server 进行检查,但没有成功。
我真的希望有人能告诉我正确的方向。
解决方案
推荐阅读
- excel - Excel - MAXIFS 的使用(在 excel 2010 中)
- c# - 在所有层中注入当前语言异步安全(ASP.NET Core 3 Mvc)
- php - 无法在 php.ini 中安装扩展以使用 sqlsrv_connect
- laravel - 使用插槽范围显示文本,不显示 ñ 字符?
- javascript - 保留重复费用的日期
- reactjs - 尝试运行 npm install 时的代码 ELIFECYCLE
- c++ - C++ 为什么我的代码没有炸毁/段错误?
- angular - 动态填充输入发送空值
- java - 在 instanceof 检查后无法调用具有类型的方法
- node.js - 如何获取通过 Node.js 上传的多部分文件的直接 URL