2016-04-08 18 views
-2
objDataTable=ConversionClass.ConvertToDataTable(strFilePath,"tbl_transactonData", ",");  String strConnectionString =ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString; 

     SqlBulkCopy bulkCopy = new SqlBulkCopy(strConnectionString); 
     bulkCopy.DestinationTableName = "tbl_AllTransactiondata"; 
     try 
     { 
      bulkCopy.WriteToServer(objDataTable); 
     } 
     catch (Exception ex) 
     { 

     } 
     finally 
     { 
      bulkCopy.Close(); 
     } 

SQL Server SQL tablosuna .net DataTable sırayla satır eklemek değildir. Ancak SqlBulkCopy sıraları düzgün sırada eklemiyor. Lütfen aynı çözümü öner.SqlBulkCopy SqlBulkCopy kullanarak SQL Tablo Datatable değeri aktarmak için gereken

+0

Sonuçların yanlış sırada olduğunu nasıl belirlediniz? Tüm hedef veriler bunu sağladığı sürece, hangi siparişin eklendiğini neden önemlidir? SQL tabloları içinde sipariş vermek konusunda temel bir yanlış anlama var, bence. –

+0

@EsotericScreenName ,,,, excel'den datatable'a ve sonra sql'e veri aktarıyorum Tablo ,,,,, Çünkü bunlar işlem verisi siparişi burada önemlidir .. Datatable siparişine baktığımda doğru ama sqlbulkcopy siparişinden sonra Sql Tablosunda, ,, –

+1

@LaxminarayanCharan Bu, Esoteric'in sorusuna cevap vermez: "Verilerin doğru sırada olmadığını bileceksiniz". Sadece bir TransactionDate gibi özgün verilerde bir alan ve SQL Server tablosunda bir IDENTITY değeri varsa ve bir tarafından sırayla diğerinin siparişi ile aynı sonucu olmadığını biliyor olabilirsiniz. Doğru? –

cevap

-1

Siparişi, sql. Elbette bu, verilerinizin zaten bir sütun tarafından sıralandığını varsayar. https://msdn.microsoft.com/en-us/library/ms188385.aspx?f=255&MSPPError=-2147217396

Tüm ekleri tamamladıktan sonra eski tablonun sıralanmış bir sürümü olan yeni bir tablo oluşturabilirsiniz. Yine aynı varsayım. How to sort values in columns and update table?

Foreach döngüsüyle her seferinde bir satır ekleyebilirsiniz. Her seferinde bir satırın bir DataRow [] oluşturması da gerekir.

Aklımdaki ideal çözüm, tümüyle ekleme işleminden sonra sıralamayı kullanarak veya sırayla kullanmaktır. Ne yazık ki, sıralı olarak satır ekleyeceğini garanti etmenin bir yolunu bulamadım.

Sınıf açıklaması: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx

0

Tipik toplu ekleme işlemleri için garantili bir düzen vardır. Her satırı tek tek (ne eğlenceli ne de verimli) eklemenin yanı sıra, TableLockSqlBulkCopyOption'u kullanmayı deneyebilirsiniz.

new SqlBulkCopy(strConnectionString, SqlBulkCopyOptions.TableLock); 

Sadece tempdb ilk bir arka plan çeşit yoluyla yapılacaktır sıralı ekleme yoluyla yapılabilir minimal-günlüğe operasyonu deneyecektir.