Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何阻止SqlBulkCopy.WriteToServer尝试使用MSDTC(分布式事务协调器)_.net_Sql Server_Transactions_Sqlbulkcopy_Msdtc - Fatal编程技术网

.net 如何阻止SqlBulkCopy.WriteToServer尝试使用MSDTC(分布式事务协调器)

.net 如何阻止SqlBulkCopy.WriteToServer尝试使用MSDTC(分布式事务协调器),.net,sql-server,transactions,sqlbulkcopy,msdtc,.net,Sql Server,Transactions,Sqlbulkcopy,Msdtc,我的代码非常简单。我真的不知道为什么会这样。我不确定事务范围或任何东西。我只是尝试将数据大容量复制到我的数据库中 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(MyConnectionString)) { bulkCopy.DestinationTableName = "TableName"; bulkCopy.ColumnMappings.Add("Co

我的代码非常简单。我真的不知道为什么会这样。我不确定事务范围或任何东西。我只是尝试将数据大容量复制到我的数据库中

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(MyConnectionString))
        {
            bulkCopy.DestinationTableName = "TableName";                
            bulkCopy.ColumnMappings.Add("Column1", "Column1");
            ...
            bulkCopy.BatchSize = 1000;

            bulkCopy.WriteToServer(someDataSet);
        }
当我运行时,我有时会得到以下信息。我不希望SqlBulCopy内部事务得到提升或类似的东西。这应该是一个简单的批量插入。设置批量大小是否会强制升级

System.Data.SqlClient.SqlException (0x80131904): MSDTC on server 'MyServer' is unavailable.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest)
   at System.Data.SqlClient.TdsParser.GetDTCAddress(Int32 timeout, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlInternalConnectionTds.GetDTCAddress()
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at System.Data.SqlClient.SqlBulkCopy.CreateOrValidateConnection(String method)
   at System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServerAsync(Int32 columnCount, CancellationToken ctoken)
   at System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable table, DataRowState rowState)

嗯,您正在使用TransactionScope。当它升级到MSDTC时进行研究。或者发布更多代码。您如何判断我正在使用事务范围。堆栈跟踪中是否有任何提示?System.Transactions是我所知道的实现DTC事务的唯一方法。您也可以使用事务类,但这是不寻常的。可能其他组件正在设置作用域(一些消息总线会这样做)。检查
事务。当前
。它是非空的吗?usr,你是对的。我使用的是代码中较高的某个事务范围。如果你把你的评论合并成一个答案,我可以接受。我也可以删除我的问题,但不确定这样做是否正确。