System.OutOfMemoryException lors de l'interrogation d'une table SQL volumineuse

J'ai écrit une requête SQL qui ressemble à ceci:

SELECT * FROM MY_TABLE WHERE ID=123456789; 

Lorsque je l'exécute dans l'Analyseur de requêtes dans SQL Server Management Studio, la requête ne renvoie jamais; Au lieu de cela, après environ dix minutes, j'obtiens l'erreur suivante: System.OutOfMemoryException

Mon server est Microsoft SQL Server (je ne sais pas quelle version).

 SELECT * FROM MY_TABLE; -- return 44258086 SELECT * FROM MY_TABLE WHERE ID=123456789; -- return 5 

La table a plus de quarante millions de lignes! Cependant, j'ai besoin d'aller chercher cinq lignes spécifiques!

Comment puis-je contourner cette erreur frustrante?

Edit: Le server a soudainement commencé à fonctionner correctement pour aucune raison discernable, mais je laisserai cette question ouverte à tous ceux qui veulent suggérer des étapes de dépannage pour n'importe qui d'autre avec ce problème.

Selon http://support.microsoft.com/kb/2874903 :

Ce problème se produit car SSMS n'a pas suffisamment de memory à allouer pour les résultats volumineux. Remarque SSMS est un process 32 bits. Par conséquent, il est limité à 2 Go de memory.

L'article suggère d'essayer l'une des solutions suivantes:

  • Affiche les résultats sous forme de text
  • Afficher les résultats dans un file
  • Utiliser sqlcmd

Vous pouvez également vérifier le server pour voir s'il a besoin d'un redémarrage du service – peut-être qu'il a englouti toute la memory disponible?

Une autre suggestion serait de sélectionner un plus petit sous-set de colonnes (si la table contient plusieurs colonnes ou inclut de grandes colonnes blob).

Si vous avez besoin de données spécifiques, utilisez une clause WHERE appropriée. Ajoutez plus de détails si vous êtes bloqué avec ceci.

Sinon, écrivez une petite application qui fonctionne en utilisant un slider et n'essaie pas de le charger complètement en memory.