2010-04-30 4 views
15

je dois retourner mon jeu de résultats en XML et cela fonctionne très bien, mais si le nombre d'enregistrements sont augmentés, ma sortie xml est truncated voici ma requêtesortie XML est tronquée dans SQL

select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS 

Cependant, je ont mis une certaine option pour augmenter le jeu de résultats de sortie comme ..

Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum    
number of characters displayed in each column 
Tools --> Options --> Results --> Maximum characters per column 

mais je n'arrive toujours pas à obtenir le résultat souhaité.

s'il vous plaît suggérer ma solution

EDIT: Cependant, lorsque je clique sur le XML, ouvert dans une autre fenêtre de requête et tout xml montré ici, mais il ne retourne tout xml au lieu de XML tronquée.

Merci ....

+0

Assurez-vous de redémarrer SSMS Management Studio pour que ces modifications prennent effet. –

Répondre

6

J'ai eu le même problème avec le studio de gestion et des jeux de résultats xml. J'ai résolu ceci en obtenant la sortie programatically avec C#, avec SqlDataReader.

0

La sortie XML que vous obtenez dans la fenêtre de sortie de requête n'est pas vraiment destinée à enregistrer les documents XML valides . Vous pouvez obtenir XML valide de SQL Server lorsque vous capturer comme un flux en utilisant des classes gérées ADO ou SQLXML dans .NET

Cependant, vous pouvez limiter la taille de sortie de requête à l'aide Dans SQL Server Management Studio allez dans Outils> > Options >> Résultats des requêtes >> SQL Server >> Résultats dans le texte >> Nombre maximal de caractères affichés dans chaque colonne

-1

Vous pouvez utiliser SQL Management Studio pour 2008 sur un moteur de base de données SQL Server 2005. Si vous faites cela, les valeurs par défaut devraient être suffisamment grandes, mais dans Outils -> Options -> Résultats de la requête -> SQL Server, il y a un noeud Results to Grid et Results To Text. Les résultats de la grille vous permet de contrôler explicitement la taille maximale des données XML et la taille maximale par défaut est de 2 Mo.

Si vous n'avez pas de licence pour SSMS 2008, vous devriez pouvoir utiliser gratuitement l'édition express here.

1

Si votre ensemble de résultats XML est toujours tronqué même après avoir modifié les options SSMS, utilisez l'utilitaire SQLCMD avec l'option: XML ON avant d'exécuter votre instruction XML. Dirigez votre sortie vers un fichier en utilisant le commutateur -o. SQLCMD est un utilitaire de ligne de commande très simple à utiliser. Voir http://msdn.microsoft.com/en-us/library/ms162773.aspx.

+0

Ne peut fonctionner qu'avec MS SQL 2008 ou version antérieure. MS SQL 2012 le coupera: https://connect.microsoft.com/SQLServer/feedback/details/786004/sqlcmd-with-xml-on-break-lines-on-large-output – Rod

37

les opérations suivantes:

Declare @xmldata xml 
set @xmldata = (select ... From test for xml...) 
select @xmldata as returnXml 
+11

Ceci devrait être la réponse acceptée –

+2

Cela m'a permis d'éviter d'utiliser XmlReader. – Edyn

+2

Cette réponse a bien fonctionné pour moi et devrait être marquée comme la réponse. –

1

Cela a fonctionné pour moi (SSMS 2012): Outils> Options> Résultats de la requête> SQL Server> Résultats: Grille à caractères maximum rejugés: données XML: Unlimited. Ensuite, j'ai enregistré les résultats de la grille dans un fichier.

2

J'ai eu le même problème. Je modifie mon paramètre de résultat de la requête sur Illimité, mais cela n'a pas fonctionné. Il y a un travail autour. Ce n'est pas très soigné, mais si vous voulez continuer à utiliser SQL Server Management Studio et obtenir les résultats. Modifiez la requête pour convertir le fichier XML stocké en utilisant:

convert(xml,'<xml><![CDATA[' + cast(MyColumnWithXml as varchar(max)) + ']]></xml>') 

Le texte complet est renvoyé.Veuillez noter que vous devrez effectuer une mise en forme à votre fin.