SQL - Guardar cadena de 1,620,515 caracteres

 
Vista:

Guardar cadena de 1,620,515 caracteres

Publicado por Jorge Salazar (2 intervenciones) el 26/04/2018 04:19:15
Hola a todos,

Estoy queriendo guardar una cadena en una columna tipo varchar(max) en SQL Server 2012. La cadena mide 1,620,515 caracteres, pudiera ser un poco más en ocasiones. El problema es que sólo se están guardando 43,679 caracteres. También intenté con una columna tipo text con el mismo resultado.

Estoy trabajando en VB .Net 2008 y al revisar la sentencia insert o update para actualizar el renglón veo que si estoy mandando la cadena completa, pero se trunca. No hay ningún error, simplemente se trunca el texto.

¿Alguna idea de cómo resolverlo?

De antemano, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Guardar cadena de 1,620,515 caracteres

Publicado por Isaias (1921 intervenciones) el 26/04/2018 17:35:26
VARCHAR(MAX), segun el manual en linea:

Tipo varchar(max) se especifica que el tamaño de almacenamiento máximo es de 2^31-1 bytes, lo que equivale a 2,147,483,648 caracteres

¿De donde saca la cifra 43,679?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge Salazar

Guardar cadena de 1,620,515 caracteres

Publicado por Jorge Salazar (2 intervenciones) el 26/04/2018 19:53:08
La cifra de 43,679 caracteres la obtengo de consultar la cadena que se guarda en la columna después de ejecutar la sentencia de SQL de INSERT o incluso de UPDATE, es decir:

1. Ejecuto la sentencia UPDATE admMovimiento SET cObservaMov = 'aqui la cadena con 1,620,155 caracteres' WHERE cIdDocumento = 18
2. Enseguida ejecuto en una consulta un SELECT cObservaMov FROM admMovimiento WHERE cIdDocumento = 18
3. Copio el contenido de cObservaMov en el Clipboard y lo pego en un documento de Word
4. En Word obtengo 12 paginas de texto y el numero de caracteres es de 43,679

Sin embargo, la sentencia SELECT LEN(cObservaMov) FROM admMovimientos WHERE ciddocumento = 18, me devuelve el valor 1,620,515

Si en el Management Studio le doy Edit Top 200 Rows y entro a la columna de ese renglón como para editar la cadena, la columna parece estar vacía, pero al darle clic derecho con el mouse y luego seleccionar Copiar del menú contextual, me copia los 1,620,515 caracteres.

Eso lo pego en Word, me da 428 páginas y son exactamente los 1,620,515 caracteres

Es todo muy extraño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Guardar cadena de 1,620,515 caracteres

Publicado por Isaias (1921 intervenciones) el 26/04/2018 22:01:58
Veamos, el MANAGEMENT STUDIO tiene un TOPE para mostrar una cadena de caracteres, debes modificarlo en OPCIONES (OPTIONS)

Para saber la longitud que tiene en la base

1
SELECT DATALENGTH(cObservaMov) FROM admMovimiento WHERE cIdDocumento = 18
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar