невозможно удалить связанные данные оракула с помощью openquery на sql-сервере с транзакцией на коде c # - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь удалить строку связанной таблицы оракула на sqlserver как показано ниже

BEGIN 
  Declare @SQL nvarchar(2000)

  -- 1. sql server table update     
  update dbo.tb_cost set Request_Date = NULL ,SAP_Number = NULL
  where Serial = @Serial

  -- 2. linked oracle table row delete
  SET @SQL = 'select * from SAPA3.VVT WHERE SERIAL = ''''' + CAST(@Serial AS  char(36)) + ''''''
  SET @SQL = 'DELETE OPENQUERY(SAP, ''' + @SQL + ''')'
  EXEC SP_EXECUTESQL @SQL
END

Когда я выполняю эту процедуру на ssms, она работает. обновление и удаление - все готово.

Но

Когда я выполняю эту процедуру в моем коде с транзакцией, Таблица сервера Sql обновлена. но данные Oracle не удаляются.

Вот мой код. (C #)

Database db = DatabaseFactory.CreateDatabase();

try
{
  using (DbConnection conn = db.CreateConnection())
  {
    conn.Open();
    DbTransaction trans = conn.BeginTransaction();

    try
    {
      //Create new data
      CostData cost = new CostData();
      cost.Status = "S";
      cost.Serial = Guid.New();

      //SAVE DATA (Excute procedure to insert data to sql server table)
      bool bResult = db.ExecuteNonQuery("dbo.SP_Cost_Save", cost.Status, cost.Serial);

      if (!bResult)
      {
          trans.Rollback();
          return
      }

      //Excute The procedure (update sql server row & delete oracle row) -- this is The procedure
      //I expect update & delete, but delete is not committed
      db.ExecuteNonQuery(trans, "dbo.SP_Cost_Cancel", cost.Serial);

      trans.Commit();
    }
    catch (Exception e)
    {
      trans.Rollback();
      return
    }
  }
}
catch (Exception e)
{
    log('error')
}

return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...