¿Cómo puedo almacenar más de 4000 caracteres en un parámetro de SQL Server?

Estoy tratando de pasar XML que es mayor de 4000 caracteres a un procedimiento almacenado. he intentado usar NTEXT, NVARCHAR(MAX), VARCHAR(MAX), VARCHAR(8000) y XML como el tipo de parámetro pero siempre obtengo el error:

System.Data.SqlClient.SqlException: los datos binarios o de cadena se truncarían. La instrucción se ha terminado.

El valor no se almacena en una tabla, es solo una variable que tiene datos seleccionados y luego se almacena en tablas.

¿ASP.NET no puede enviar más de 4000 caracteres como parámetro? ¿O hay una configuración en SQL Server que puedo desactivar?

Gracias,

Thomas

EDIT:

Esto esta trabajando con NTEXT. Ingresé a los detalles del error y encontré qué línea del SQL estaba causando el error y resultó que había una columna completamente no relacionada establecida en VARCHAR(50) eso debería haber sido VARCHAR(MAX) - Asumí que venía del carácter 10000 XML pero no tenía ninguna relación. Mis disculpas.

preguntado el 03 de mayo de 12 a las 20:05

¿Cuál es la longitud de esa columna en la que intenta escribir en la base de datos? -

Si está pasando el valor como un parámetro, ¿ha recordado aumentar el ancho del parámetro y el tipo de datos? Ese me muerde cada tanto... -

Muéstranos el código para que podamos señalar el error, en lugar de adivinar. El truncamiento ocurre porque su código lo trunca. -

No deberías estar usando NTEXT más: está en desuso y pronto se eliminará de SQL Server. Usar NVARCHAR(MAX) en cambio, tiene las mismas propiedades beneficiosas e incluso puede tratarse como un "normal" NVARCHAR(x) cadena: use todas las funciones de cadena en su contra (manejo NTEXT siempre fue muy torpe) -

¡Considera eliminar la pregunta! -

3 Respuestas

Divida el XML en fragmentos más pequeños y asígnelos en una variable separada y luego concatenelos

DECLARAR @SQL1,@SQL2

ESTABLECER @SQL1=trozo1

ESTABLECER @SQL2=trozo2

SET @SQLn=fragmento

ejecutivo (@SQL1+@SQL2.....+@SQLn)

contestado el 04 de mayo de 12 a las 16:05

Esta es una limitación del servidor sql en todas las ediciones. Puede dividir el xml en dos variables varchar y combinarlas en el procedimiento almacenado. Es una solución para el problema.

contestado el 04 de mayo de 12 a las 11:05

Parece que hay varias maneras de hacer esto. Este planteamiento de « Así es como lo hice recientemente.

Respondido 19 Feb 13, 16:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.