Problema con limitación de nvarchar

28/12/2006 - 09:38 por Julián | Informe spam
Hola grupo:

Necesito ejecutar una Select dinámico en un servidor diferente al de
trabajo,y utilizo la instrucción:
exec sp_executesql @lSQL, @ParmDef,

El problema es que el "sp_executesql" obliga a que la instrucción a ejecutar
se pase en una variable de tipo nvarchar, y en mi caso la instrucción a
ejecutar ocupa más de 4000 bytes.

¿ Existe alguna posible solución a este problema sin tener que empezar a
crear tablas temporales intermedias,etc... ?

Saludos.

Preguntas similare

Leer las respuestas

#1 Ismael
28/12/2006 - 10:13 | Informe spam
Tienes que especificar en bytes el tamaño máximo que quieres que tenga el
nvarchar, algo así como "nvarchar(max)". Mirate este artículo que lo explica
mejor:

http://msdn2.microsoft.com/es-es/li...78158.aspx

Ismael



"Julián" wrote:

Hola grupo:

Necesito ejecutar una Select dinámico en un servidor diferente al de
trabajo,y utilizo la instrucción:
exec sp_executesql @lSQL, @ParmDef,

El problema es que el "sp_executesql" obliga a que la instrucción a ejecutar
se pase en una variable de tipo nvarchar, y en mi caso la instrucción a
ejecutar ocupa más de 4000 bytes.

¿ Existe alguna posible solución a este problema sin tener que empezar a
crear tablas temporales intermedias,etc... ?

Saludos.




Respuesta Responder a este mensaje
#2 Julián
28/12/2006 - 10:38 | Informe spam
Se me había olvidado comentar que trabajo con SQL Server 2000, por lo que no
tengo la opción de: nvarchar(max)

"Ismael" escribió en el mensaje
news:
Tienes que especificar en bytes el tamaño máximo que quieres que tenga el
nvarchar, algo así como "nvarchar(max)". Mirate este artículo que lo
explica
mejor:

http://msdn2.microsoft.com/es-es/li...78158.aspx

Ismael



"Julián" wrote:

Hola grupo:

Necesito ejecutar una Select dinámico en un servidor diferente al de
trabajo,y utilizo la instrucción:
exec sp_executesql @lSQL, @ParmDef,

El problema es que el "sp_executesql" obliga a que la instrucción a
ejecutar
se pase en una variable de tipo nvarchar, y en mi caso la instrucción a
ejecutar ocupa más de 4000 bytes.

¿ Existe alguna posible solución a este problema sin tener que empezar a
crear tablas temporales intermedias,etc... ?

Saludos.




Respuesta Responder a este mensaje
#3 Salvador Ramos
28/12/2006 - 11:45 | Informe spam
Hola,

Debes utilizar EXEC en lugar de sp_executesql, ya que EXEC permite
concatenar variables. Te paso un ejemplo que publicó anteriormente el amigo
Alejandro Mesa en este grupo.

Ejemplo:

declare @s1 nvarchar(4000)
declare @s2 nvarchar(4000)

set @s1 = N'exec sp_executesql N''select * from nortwind.dbo.orders where
orderid = @orderid'''
set @s2 = N',@orderid int, 10250'

exec (@s1 + @s2)
go


Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server / MCTS: SQL Server 2005]
www.helpdna.net (información sobre SQL Server y .NET)


"Julián" escribió en el mensaje
news:uERO$
Hola grupo:

Necesito ejecutar una Select dinámico en un servidor diferente al de
trabajo,y utilizo la instrucción:
exec sp_executesql @lSQL, @ParmDef,

El problema es que el "sp_executesql" obliga a que la instrucción a
ejecutar se pase en una variable de tipo nvarchar, y en mi caso la
instrucción a ejecutar ocupa más de 4000 bytes.

¿ Existe alguna posible solución a este problema sin tener que empezar a
crear tablas temporales intermedias,etc... ?

Saludos.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida