2010-04-27 5 views
0
StringBuilder query = new StringBuilder(); 
        query.Append("CREATE TABLE #Codes (Code nvarchar(100) collate database_default) "); 
        query.Append("Insert into #Codes (Code) "); 
        int lengthOfCodesArray = targetCodes.Length; 
        for (int index = 0; index < lengthOfCodesArray; index++) 
        { 
         string targetCode = targetCodes[index]; 
         query.Append("Select N'" + targetCode + "' "); 
         if (index != lengthOfCodesArray - 1) 
         { 
          query.Append("Union All "); 
         } 
        } 
    query.Append("drop table #Codes "); 

sur: cmd.ExecuteReader() Je reçoisLa mémoire système insuffisante pour exécuter cette requête lors de la création table temporaire

Il y a mémoire système insuffisant pour exécuter cette requête lors de la création table temporaire

But weird thing is that, when I have 25k codes is ok, when 5k I get this error. 

La taille initiale est de 262 Mo.

Lengt de chaque code est en moyenne 15.

+0

Qu'est-ce que ce morceau de code est censé faire? –

+0

J'utilise cette table pour joindre d'autres, mais je ne peux pas montrer ce code. Mais maintenant, je teste tout ce texte de commande que je vous ai montré. – user278618

Répondre

1

Ce produit une déclaration géante , et bien sûr, il finit par échouer.

Vous devriez faire votre INSERT un à la fois (pas UNION ALL), au moins jusqu'à ce qu'il soit temps d'optimiser.

J'ai l'impression que votre réponse finale va impliquer BULK INSERT, mais je ne sais pas assez sur votre application pour être sûr.

+0

Pinalkumar Dave est l'autorité pour moi, et il prétend d'une autre manière: http://blog.sqlauthority.com/2009/03/11/sql-server-difference-between-union-vs-union-all-optimal- performance-comparison/ – user278618

+0

L'insertion en bloc n'est pas autorisée – user278618

+1

Etes-vous autorisé à utiliser XML? Vous pouvez passer tous les codes en tant que document XML dans SQL Server, puis utiliser le type de données XML et ses méthodes pour l'insérer dans une table. Encore beaucoup moins efficace que BULK INSERT. –

Questions connexes