String StrSqlConn = System.Configuration.ConfigurationManager.AppSettings["ConStr"];
        SqlConnection conn = new SqlConnection(StrSqlConn);
        conn.Open();
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        SqlTransaction transaction = conn.BeginTransaction(); //Enlisting database
        command.Transaction = transaction;
        try
        {
            string strSql = " INSERT INTO td_pcdm_temp (Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm) ";
            strSql = strSql + " SELECT Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm ";
            strSql = strSql + " FROM OPENROWSET ('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB= ";
            string filepath = System.IO.Path.GetDirectoryName(FileUpload1.PostedFile.FileName);//修改了IE8的Interent选项-安全-自定义级别-将文件上载到服务器时包含本地目录路径
            strSql = strSql + filepath + "; SourceType=DBF','SELECT * FROM td_pcdm')";            string strSql2 = " UPDATE td_pcdm_temp SET Sfdm = " + DropDownList1.SelectedValue.ToString();
            string strSql3 = " INSERT INTO td_pcdm(Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm) SELECT Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm FROM td_pcdm_temp";
            string strSql4 = " DELETE FROM td_pcdm_temp";            command.CommandText = strSql;
            command.ExecuteNonQuery();
            //command.CommandText = strSql2;
            //command.ExecuteNonQuery();
            //command.CommandText = strSql3;
            //command.ExecuteNonQuery();
            //command.CommandText = strSql4;
            //command.ExecuteNonQuery();
            transaction.Commit();
            Response.Write("<script languager='javascript'>alert('数据导入成功!');</script>");
            Response.AddHeader("Refresh", "0");
        }
        catch(Exception ex)
        {
            transaction.Rollback(); //Abort transaction
            Response.Write(ex);
            //Response.Write("<script languager='javascript'>alert('数据导入失败!');</script>");
            //Response.AddHeader("Refresh", "0");
        }
        finally
        {
            conn.Close();
        }
strSql目的是把VF数据库导入到SQL SERVER中。
利用事务执行strSql的SQL语句就是不成功,但是strSql2,strSql3,strSql4可以成功,如果不用事务strSql可以执行成功,这是什么原因?
报错显示:
System.Data.SqlClient.SqlException: 服务器 'CHINA-32DC0D325' 上的 MSDTC 不可用。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 DaoRu_Data_t_jhk_DaoRu.Button1_Click(Object sender, EventArgs e) 位置 d:\Zhaoshengtongji\DaoRu_Data\t_jhk_DaoRu.aspx.cs:行号 84