Je veux souvent faire un "Vérification rapide" de la valeur d'une grande colonne de texte dans SQL Server Management Studio (SSMS). Le nombre maximal de caractères que SSMS vous permettra de voir, en mode Résultats de la grille, est 65535. (Il est encore moins en mode de résultats de texte.) Parfois, j'ai besoin de voir quelque chose au-delà de cette gamme. Utilisation de bases de données SQL Server 2005, j'ai souvent utilisé l'astuce de la convertir en XML, car SSMS vous permet d'afficher des quantités beaucoup plus importantes de texte de cette façon: mais maintenant j'utilise SQL CE, et Il n'y a pas de type de données XML. Il y a toujours une valeur «caractères maximum de caractères XML» sous des options; Je suppose que cela est utile lors de la connexion à d'autres sources de données. P> Je sais que je peux simplement obtenir la valeur totale en exécutant une petite application de console ou quelque chose, mais y a-t-il un moyen de voir la colonne de la Ntext entière Valeur? P> La solution doit fonctionner avec des colonnes NVARCHAR et NTEXT de n'importe quelle longueur dans SQL CE de SSMS. Des idées? P> p>
substrant code> et génère plusieurs colonnes ad-hoc ??) pour voir les résultats. Li>
ol>
4 Réponses :
par ce http://msdn.microsoft.com/en-us /Library/ms171931.aspx Vous n'avez pas de chance en utilisant le type XML dans SQL CE. Cela n'existe tout simplement pas. Vous obtenez toujours un champ BLOB NText de 2 Go, mais ce n'est pas d'aide. P>
Sélectionnez ... comme XML fonctionne dans une requête CE, mais on dirait que la grille le tronque toujours comme Ntext. Pour tester Créer une table Nommé Test avec Char comme NvarchaRar (4000) et Texte comme champs Ntext. Utilisez les affirmations suivantes pour remplir les données et renvoyez-la: P>
Je reçois les deux champs tronquant à peu près au même endroit du mode de grille qui le suggérerait de tronquer moins de 65535. Supprimer le Vos réponses: P>
À la fin de la journée, cependant, je ne peux pas m'empêcher de penser que tout cela serait toujours une perte de temps. Vous pourriez peut-être trouver un meilleur outil SQL CE que vous pouvez modifier le schéma et em> toutes les colonnes de manière appropriée. C'est un peu triste que cela vienne même, mais je ne vois pas une option plus facile. P> Sélectionnez CHAR, Texte de Test sous forme XML CODE> P>
Insert dans les valeurs de test (TRAN, TEXT) (Répliquer ('A', 4000), répliquez ('B', 4000) + Repliquer ('B', 4000)) CODE> P >
comme XML code> n'a aucun effet pour que cela ne soit pas réellement allé à XML données quand même. p>
Cela peut ne pas être idéal, mais pouvez-vous le casser en le visualisant en mode texte?
Par exemple: P>
;WITH my_cte AS ( SELECT SUBSTRING(my_text, 1, 8000) AS sub, SUBSTRING(my_text, 8001, LEN(CAST(my_text AS VARCHAR(MAX)))) AS remainder FROM dbo.Test_Text UNION ALL SELECT SUBSTRING(remainder, 1, 8000), SUBSTRING(remainder, 8001, LEN(remainder)) FROM my_cte WHERE LEN(remainder) > 0 ) SELECT * FROM my_cte
Malheureusement, les CTE ne sont pas pris en charge en CE. La sous-chaîne portait sur le mieux que j'ai pu venir avec. Pour la majorité des cas, c'est suffisant. Cette question est plus un défi académique à ce stade ...
Si vous travaillez avec CE 3.5 Prise en charge du haut et des applications extérieures Essayez cette affirmation:
SELECT texts.id, SUBSTRING(texts.text_column, number*100+1, 100) FROM (SELECT texts.id, texts.text_column, (99+LEN(texts.text_column))/100 AS l FROM texts) AS texts OUTER APPLY (SELECT TOP(l) number FROM master.dbo.spt_values val WHERE name IS NULL ORDER BY number) n
Idée soignée. Je n'étais pas familiarisé avec la fonction d'application extérieure. Malheureusement, la déclaration ne fonctionne pas dans CE, probablement parce qu'il n'y a pas d'équivalent à une base de données principale. Mais je vois ce qui se passe; Peut-être qu'il y a une autre façon d'obtenir le numéro d'énumération.
Je pense que cela a la plus promesse des réponses, alors je le marquez comme la réponse. Il y a un peu plus de temps jusqu'à ce que la prime expire, mais je pars pour des vacances ... :)
Je fais comme ceci (démarrez le code sous le mode de débogage) et après avoir exécuté l'instruction SET, vous pouvez simplement copier le texte grand de la fenêtre de débogage dans lequel vous voyez la valeur @X, cliquez sur le visualiseur de la loupe / texte: < Pré> xxx pré> p>
Cela a le même problème que l'impression de SQL a une limite de chargement de 8K.
cette convertie en XML est une bonne truc.