gpt4 book ai didi

c# - 将 TransactionScope 与 System.Data.OracleClient 结合使用 - TransactionAbortedException

转载 作者:行者123 更新时间:2023-11-30 21:20:01 28 4
gpt4 key购买 nike

我的系统将一些数据写入 SQL Server 数据库 (2008),稍后将其提取并进一步处理,然后再将其写入 Oracle (10g) 数据库。

我已经将我的 SQL Server 交互包装在一个 TransactionScope 中,但是当我尝试对我的 Oracle 交互进行同样的思考时,我得到一个 `TranactionAbortedException - “事务已中止”。

删除 TransactionScope,一切正常。

我总是可以恢复到手动管理自己的交易,但我希望有一个简单的解决方案。

示例代码:

private static void OracleTest()
{
using (TransactionScope ts = new TransactionScope())
{
using (OracleConnection conn = new OracleConnection(connString))
{
try
{
using (OracleCommand cmd = new OracleCommand())
{
cmd.CommandText = "MyPackage.MyFunction";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;

OracleParameter param = cmd.Parameters.Add(new OracleParameter("field1_", "abc123"));

param = cmd.Parameters.Add(new OracleParameter("rs_", OracleType.Cursor));
param.Direction = System.Data.ParameterDirection.Output;
conn.Open();
using (OracleDataReader dr = cmd.ExecuteReader())
{

我没有发现任何迹象表明您不能将 TransactionScopes 与 Oracle 一起使用,但是正如您从我的示例中看到的那样,我们正处于第一个障碍(当我们打开连接时),因此很难看出我可能哪里出错了。

最佳答案

你可能想看看这个;我对 Oracle 10g 中的 TransactionScope 也不太满意:http://forums.oracle.com/forums/thread.jspa?messageID=4127323

关于c# - 将 TransactionScope 与 System.Data.OracleClient 结合使用 - TransactionAbortedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494911/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com