C# 如何避免MSTDC

C# 如何避免MSTDC,c#,tsql,stored-procedures,msdtc,sql-server-2008-express,C#,Tsql,Stored Procedures,Msdtc,Sql Server 2008 Express,我想在两台SQL Server 2008 Express Edition之间同步数据。我希望避免将SQL查询升级到MS DTC服务(MS DTC服务未运行)。对于同步,我使用不带事务的存储过程 我有更多的存储过程。从链接服务器下载数据,然后将其存储到本地数据库的过程运行良好 我正在使用存储过程将数据上载到链接服务器。在存储过程中,我没有使用任何事务 当我从SQLManagementStudio运行存储过程时,数据被正确地上传到服务器。但是当我从.NET4.0C代码调用这个过程时,它以错误告终 8

我想在两台SQL Server 2008 Express Edition之间同步数据。我希望避免将SQL查询升级到MS DTC服务(MS DTC服务未运行)。对于同步,我使用不带事务的存储过程

我有更多的存储过程。从链接服务器下载数据,然后将其存储到本地数据库的过程运行良好

我正在使用存储过程将数据上载到链接服务器。在存储过程中,我没有使用任何事务

当我从SQLManagementStudio运行存储过程时,数据被正确地上传到服务器。但是当我从.NET4.0C代码调用这个过程时,它以错误告终

8501-服务器“compName\SQLEXPRESS2008”上的MSDTC不可用

应用程序代码中未使用任何事务。有时甚至从代码上传数据。我不知道什么时候需要MSDTC,什么时候不需要

没有使用事务时为什么需要MSDTC?

EDIT1:

我没有什么进步。此代码用于调用存储过程。第一次调用该过程时,数据被正确地上载到服务器。下一次它以异常8501结束

  SqlCommand sqlCmd = new SqlCommand("spUploadUnsendStockDocument");
  sqlCmd.CommandType = CommandType.StoredProcedure;
  sqlCmd.Parameters.AddWithValue("@pDebug", false);
  sqlCmd.Parameters.AddWithValue("@boxId", boxId);

  // Return value as parameter
  SqlParameter returnValue = new SqlParameter("returnVal", SqlDbType.Int);
  returnValue.Direction = ParameterDirection.ReturnValue;
  sqlCmd.Parameters.Add(returnValue);

  try
  {

      using (SqlConnection conn = new SqlConnection(dbConnection.ConnectionString))
      {
        conn.Open();
        sqlCmd.Connection = conn;
        sqlCmd.ExecuteScalar();
        sqlCmd.Dispose();
        conn.Close();
      }

    if (Convert.ToInt16(returnValue.Value) == 1)
      LogError("error while sending");

    return Convert.ToInt16(returnValue.Value) == 0;
  }
  catch (Exception ex)
  {
    Log(ex);
    return false;
  }

为什么你要自己管理同步

为什么不使用SQL SERVER 2008 Express内置的复制功能


这将允许您在数据库之间推拉以保持它们的同步

我需要在2台SQL Server 2008 Express Edition之间进行复制。我认为我不能在两台Express Edition服务器之间使用内置复制。直接从我发送给您的链接。。。Microsoft SQL Server 2008 Express(SQL Server Express)可以作为所有类型复制的订阅服务器,为向使用SQL Server Express的客户端应用程序分发数据提供了一种方便的方法。当在复制拓扑中使用SQLServer Express时,请考虑以下内容:谢谢您的回答,但根据。无法使用复制功能。两个数据库中的表结构略有不同。