9
votes

SQL Server Texte de données Type de Texte maximum = 65.535?

logiciel que je travaille avec utilise un champ de texte pour stocker XML. De mes recherches en ligne, le type de données texte est censé contenir 2 ^ 31 - 1 caractères. Actuellement, SQL Server tronque le XML à 65 535 caractères à chaque fois. Je sais que cela est causé par SQL Server, car si j'ajoute un caractère 65 536e de la colonne directement dans Gestion Studio, il indique qu'il ne sera pas mis à jour car les caractères seront tronqués.

est la longueur maximale réellement 65 535 ou pourrait-on être parce que la base de données a été conçue dans une version antérieure de SQL Server (2000) et utilise le texte Legacy DataType au lieu de 2005?

Si tel est le cas, modifierons le type de données sur texte dans SQL Server 2005, corrigez ce problème?


1 commentaires

Cela fait partie d'une base de données en miroir dans un processus de synchronisation. J'espérais éviter de modifier le champ sur tous les clients aussi.


5 Réponses :


0
votes

MSSQL 2000 devrait permettre jusqu'à 2 ^ 31 - 1 caractères (non unicode) dans un champ de texte, qui dépasse 2 milliards. Je ne sais pas ce qui cause cette limitation, mais vous voudrez peut-être essayer d'utiliser Varchar (Max) ou Nvarchar (max). Celles-ci stockent autant de caractères mais permettent également les fonctions de T-SQL à chaîne ordinaire (comme Len, Substring, Remplacer, Rtrim, ...).


1 commentaires

En fait, NvarcharN stocke uniquement la moitié du nombre de caractères que Varchar, car il est unicode et utilise 2 octets par caractère.



0
votes

Si vous êtes capable de convertir la colonne, vous pourriez également, car le type de données sera supprimé dans une future version de SQL Server. voir ici .

La recommandation est d'utiliser varchar (max) ou nvarchar (max) . Dans votre cas, vous pouvez également utiliser le type de données xml , mais cela peut vous attacher à certains moteurs de base de données (si c'est une contrepartie).


0 commentaires

0
votes

Vous devriez avoir un coup d'oeil à


0 commentaires

13
votes

C'est une limitation de SSMS non du champ de texte, mais vous devez utiliser Varcharchar (max) car le texte est obsolète

 Texte alternatif

Voici aussi un test rapide xxx

retourne 100000 pour moi


1 commentaires

Vous m'avez sauvé de devoir reconstruire un système frontal! Je voyais cette limite 65535 lors de la visualisation des données importées d'un front-end, qui signifiait que j'allais devoir limiter la taille des fichiers à moins de 65k caractères lol. Je peux maintenant voir que ce sont les résultats SSMS tronqués et non les données, elles-mêmes. Merci beaucoup!



-1
votes

Vous pouvez utiliser: QUERY SQL de l'utilisateur de PLASE CODE>.

GO  
EXEC sp_configure 'show advanced options', 1 ;   
RECONFIGURE ;   
GO  
EXEC sp_configure 'max text repl size', -1 ;   
GO  
RECONFIGURE;   


0 commentaires