1.问题分析
批量插入数据到表:BulkCopyAddNew -TableName: RB_Product_OrderSourceSKU
违反主键约束“PK\U RB\U Product\U ORDERSOURCESSKOUK”。无法在对象“dbo”中插入重复键,
阿里日志 每天606个错误
2.解决方案
排除已插入的主键值在插入,判断是否是主键生成重复问题
3. 阿里云完整错误信息:
content
:[09:01:53] -------------------------------------------------------------CODE:N090153299
Error:14_2627_1_-2146232060
SQL:BulkCopyAddNew -TableName: RB_Product_OrderSourceSKU
PARAMS:
MESSAGE:Violation of PRIMARY KEY constraint 'PK_RB_Product_OrderSourceSKUOK'. Cannot insert duplicate key in object 'dbo.RB_Product_OrderSourceSKU'. The duplicate key value is (50007396, 1).
The statement has been terminated.
TRACE: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlBulkCopy.RunParser(BulkCopySimpleResultSet bulkCopyHandler) 在 System.Data.SqlClient.SqlBulkCopy.CopyBatchesAsyncContinuedOnSuccess(BulkCopySimpleResultSet internalResults, String updateBulkCommandText, CancellationToken cts, TaskCompletionSource`1 source) 在 System.Data.SqlClient.SqlBulkCopy.CopyBatchesAsyncContinued(BulkCopySimpleResultSet internalResults, String updateBulkCommandText, CancellationToken cts, TaskCompletionSource`1 source) 在 System.Data.SqlClient.SqlBulkCopy.CopyBatchesAsync(BulkCopySimpleResultSet internalResults, String updateBulkCommandText, CancellationToken cts, TaskCompletionSource`1 source) 在 System.Data.SqlClient.SqlBulkCopy.WriteToServerInternalRestContinuedAsync(BulkCopySimpleResultSet internalResults, CancellationToken cts, TaskCompletionSource`1 source) 在 System.Data.SqlClient.SqlBulkCopy.WriteToServerInternalRestAsync(CancellationToken cts, TaskCompletionSource`1 source) 在 System.Data.SqlClient.SqlBulkCopy.WriteToServerInternalAsync(CancellationToken ctoken) 在 System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServerAsync(Int32 columnCount, CancellationToken ctoken) 在 System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable table, DataRowState rowState) 在 RB.DAL.DBOperator.BulkCopyAddNew(DataTable dt, Boolean exOld, Int32 batchSize) 在 RB.DAL.DBOperator.toCommonTipException(SqlException ex, String sql, Boolean exOld, SqlParameter[] cmdParms) 在 RB.DAL.DBOperator.BulkCopyAddNew(DataTable dt, Boolean exOld, Int32 batchSize) 在 Biz.PlatformUtil.OrderMatchRules.AOrderMatchRules.OrderSaveChange() 在 Biz.PlatformUtil.OrderMatchRules.AOrderMatchRules.DoOrderMatchingRulesTask() 在 ChinaDownLoadImage.Task.Task_Order_OrderInfoMatchRules.Execute() 在 RB.Utility.SystemTask.<doTask>b__43_0() 在 System.Threading.Tasks.Task.Execute() 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在 System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 在 System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution) 在 System.Threading.ThreadPoolWorkQueue.Dispatch() -------------------------------------------------------------