ASP.NET SqlBulkCopy n'insère pas tous les enregistrements sur le serveur

.net asp.net database sql sqlbulkcopy

Question

Je n'ai aucune idée pourquoi SqlBulkCopy n'insère pas tous les enregistrements du lecteur. Code:

using (OleDbDataReader dr1 = cmd.ExecuteReader())
   {
       using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ss, SqlBulkCopyOptions.TableLock, null))
       {
            bulkCopy.BulkCopyTimeout = 0;
            bulkCopy.BatchSize = 500;
            bulkCopy.DestinationTableName = tableName;
            try
            {
                bulkCopy.WriteToServer(dr1);
            }
            catch (Exception ex)
            {
                Log.LogSystemLog(ex.ToString());
                return false;
            }

       }

       GC.Collect();
       dr1.Close();
   }              

Je veux en vrac Copier environ 300 000 enregistrements. Cela fonctionne quand j'exécute ceci de localhost à la même base de données, mais quand je l'exécute du serveur - il insère toujours des enregistrements de ~ 7k… et aucune erreur, ni exception. Sur le serveur, 4 Go de RAM sont disponibles. Sur localhost ~ 1,5 Go.

Je ne sais pas pourquoi cela fonctionne correctement sur localhost, mais ce n'est pas le cas sur le serveur.

Réponse populaire

J'ai eu le même problème, résolu en ajoutant ce qui suit à ma chaîne de connexion.

IMEX = 1

Exemple:

string connectionString = "Fournisseur = Microsoft.ACE.OLEDB.12.0;" + "Data Source =" + Server.MapPath (rutacom) + ";" + "Propriétés étendues = 'Excel 12.0 Xml; HDR = OUI; IMEX = 1'";

Dans mon localhost fonctionnait parfaitement, mais pas sur le serveur.

Essayez-le :)

Remarques:

"HDR = Oui;" indique que la première ligne contient des noms de colonnes, pas des données. "HDR = No;" indique le contraire.

Utiliser toujours IMEX = 1 est un moyen plus sûr de récupérer des données pour des colonnes de données mélangées. Considérez le scénario selon lequel un fichier Excel peut fonctionner correctement car les données de ce fichier amènent le pilote à deviner un type de données, tandis qu'un autre fichier contenant d'autres données force le pilote à deviner un autre type de données. Cela peut entraîner le blocage de votre application.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi