亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取對數據庫的請求以錯誤結束的行號

獲取對數據庫的請求以錯誤結束的行號

C#
一只名叫tom的貓 2021-06-30 11:12:59
我使用此代碼發送 SQL 請求: SqlBulkCopy bulkCopy = new SqlBulkCopy(Connection); foreach (DataColumn column in dt.Columns) {     bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName); } bulkCopy.DestinationTableName = "nsi." + classifierData.Info.TableName; bulkCopy.WriteToServer(dt);并得到這個例外:從 bcp 客戶端收到一個無效的列長度,用于 colid有沒有辦法確定哪一行導致錯誤?我試過使用它,但它不起作用(值總是相同的): FieldInfo currentRow = typeof(SqlBulkCopy).GetField("_currentRowLength", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance); var currentRowNumber = currentRow.GetValue(bulkCopy); FieldInfo _rowsCopiedField = typeof(SqlBulkCopy).GetField("_rowsCopied", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance); var currentRowN = _rowsCopiedField.GetValue(bulkCopy);請幫助我任何人...
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

我相信純粹識別錯誤行的唯一方法SqlBulkCopy是使用NotifyAfter屬性 + SqlRowsCopied事件 + BatchSize = 1。


從這些中,您現在可以輕松擁有一個Index屬性,您可以為每個成功復制的行增加該屬性,并且您將能夠找到錯誤的索引。


例如,拋出一個錯誤,你重試 NotifyAfter = 1


bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);

bulkCopy.NotifyAfter = 1;

bulkCopy.BatchSize = 1;

顯然,這不是最佳性能明智的解決方案,但您會找到您的信息。


編輯:回答評論


抱歉,但是我可以得到一個有錯誤的行列值嗎?


我不這么認為。我們不確切知道哪一列有錯誤消息的問題。


查看完整回答
反對 回復 2021-07-03
  • 1 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號