• 已禁用对分布式事务管理器(MSDTC)的网络访问
  • 发布于 2个月前
  • 452 热度
    1 评论

我在做数据的批量导入时,系统报:System.Transactions.TransactionManagerCommunicationException:“已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。” 这个错误。谁能帮我看一下这是什么问题,该如何解决。

我的代码如下:

        public static void SqlBulkCopyByDatatable(DataTable dt)
        {
            string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["FWConn"].ConnectionString;
            string TableName = "uf_CNAPSBank";
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    using (SqlBulkCopy sqlbulkcopy =
    new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
                    {
                        try
                        {
                            sqlbulkcopy.DestinationTableName = TableName;
                            int colQty = dt.Columns.Count;
                            for (int i = 0; i < colQty; i++)
                            {
                                sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                            }
                            BasicDataDAL.DelAllCNAPSNo();//清空数据
                            sqlbulkcopy.WriteToServer(dt);

                            scope.Complete();
                        }
                        catch (System.Exception ex)
                        {
                            throw ex;
                        }
                    }
                }
            }
        }

用户评论
  • 北风吹
  • 你的SqlBulkCopy 已经用了SqlBulkCopyOptions.UseInternalTransaction,你在外面又嵌套了一层using (TransactionScope scope = new TransactionScope()),你把这句拿掉试一下。
  • 2022/5/5 14:49:00 [ 0 ] [ 0 ] 回复