SQL Query FOR XML fonctionne bien en 2000, lent en 2008 R2

Je convertis les packages SSIS d'un client de DTS vers SSIS. Dans l'un de leurs packages, ils ont une tâche SQL exécutable qui a une requête similaire à ceci:

SELECT * FROM [SOME_TABLE] AS ReturnValues ORDER BY IDNumber FOR XML AUTO, ELEMENTS 

Cette requête semble revenir dans un time décent sur l'ancien système, mais sur la nouvelle boîte, il faut jusqu'à 18 minutes pour exécuter la requête dans SSMS. Parfois, si je l'exécute, il va générer un lien XML et si je clique dessus pour voir le XML, il lance une 'System.OutOfMemoryException' et suggère d'augmenter le nombre de caractères récupérés sur le server pour datatables XML. J'ai augmenté l'option illimitée et toujours get l'erreur.

La table elle-même contient 220 500 lignes mais les lignes de requête returnnées indiquent 129 810 avant l'arrêt de la requête. Est-ce simplement une question de manque de memory disponible pour le système? Cette boîte a 48 Go (Win 2008 R2 EE x64), instance plafonnée à 18 Go parce que son environnement de développement partagé. Toute aide / compréhension serait grandement appréciée car je ne connais pas vraiment le XML!

Lorsque vous utilisez SSMS pour faire des requêtes XML FOR XML, il génère tout le XML, puis le place dans la grid et vous permet de cliquer dessus. Il y a des limites à la quantité de données qu'il ramène et avec 220 000 lignes, selon la largeur de la table, est énorme et produit beaucoup de text.

Le manque de memory est le fait que SQL Server essaie d'parsingr tout cela et c'est beaucoup de consommation de memory pour SSMS.

Vous pouvez essayer d'exécuter dans un file et voir ce que vous obtenez pour la taille. Mais la raison principale pour manquer de memory, c'est parce que c'est beaucoup de XML et de le returnner à la grid, vous n'obtiendrez pas tous les résultats tout le time avec ce type de jeu de résultats (taille sage).

DBADuck (Ben)

L'exception d'insuffisance de memory que vous rencontrez est due à la quantité de text qu'un contrôle de grid .net peut gérer. 220k lignes est énorme! le réglage dans SSMS pour montrer des données illimitées est seulement aussi bon que le plafond de la memory de contrôle.

Vous pouvez supprimer l'option ELEMENTS et regarder datatables au format de l'atsortingbut. Cela diminuera le montant "espace de string" XML renvoyé. Personnellement, je préfère les attributes aux éléments pour cette seule raison. Le context est roi, donc cela dépend de ce que vous essayez d'accomplir (regardez datatables ou utilisez datatables). Pourriez-vous redirect datatables dans une variable XML? Quand tout est dit et fait, DBADuck est 100% correct dans sa déclaration.

SqlNightOwl