Reviso y veo que aparentemente se ha llegado al límite de la variable nvarchar(max) que utilizo para concatenar los encabezados con el cuerpo del correo pero veo que no es así, me explico:
Esta consulta es la que forma el cuerpo del correo:
Cita:
Pero revisando su extensión como resultado XML con datalength veo que solo ocupa 5231 bytes:select td = Cliente, '', td = NoRemision, '', td = IDRollo, '', td = NoParte, '', td = Dimension, '', td = Spec, '', td = Factura, '', td = Inspec, '', td = Peso, '', td = PPT, '', td = Costo, ''
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
Cita:
y si veo lo que ocupa sin convertirla a XML sino solo como texto, ocupa 8208 bytes:select [datalength] = datalength((select td = Cliente, '', td = NoRemision, '', td = IDRollo, '', td = NoParte, '', td = Dimension, '', td = Spec, '', td = Factura, '', td = Inspec, '', td = Peso, '', td = PPT, '', td = Costo, ''
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' ), type))
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' ), type))
Cita:
Desde ahí ya no entendí el por que de el aumento, pero lo que si me afecta es que como texto no cabe el resultado completo, y es que necesito que sea texto por que debo concatenar los encabezados personalizados de la tabla y del correo. Entonces si no la convierto a nvarchar con un Convert marca un error de conversión implícita del tipo de datos xml a nvarchar(max).select [datalength] = datalength((select td = Cliente, '', td = NoRemision, '', td = IDRollo, '', td = NoParte, '', td = Dimension, '', td = Spec, '', td = Factura, '', td = Inspec, '', td = Peso, '', td = PPT, '', td = Costo, ''
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' )))
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' )))
Cita:
Ese as nvarchar(max) es el que me trunca el resultado, pero no lo entiendo por que haciendo mis pruebas una variable nvarchar(max) puede recibir mucho más que esos 8000 bytesdeclare @qr as nvarchar(max)
select @qr =cast( (select td = Cliente, '', td = NoRemision, '', td = IDRollo, '', td = NoParte, '', td = Dimension, '', td = Spec, '', td = Factura, '', td = Inspec, '', td = Peso, '', td = PPT, '', td = Costo, ''
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' ), type) as nvarchar(max) )
print @qr
select @qr =cast( (select td = Cliente, '', td = NoRemision, '', td = IDRollo, '', td = NoParte, '', td = Dimension, '', td = Spec, '', td = Factura, '', td = Inspec, '', td = Peso, '', td = PPT, '', td = Costo, ''
from Nicometal.dbo.vw_EntregaDiaria
order by NoRemision, IDRollo
for xml path( 'tr' ), type) as nvarchar(max) )
print @qr
Cita:
Esa prueba metió 60,000 bytes sin problemas, entonces .....declare @sql nvarchar(max)
set @sql = N'select [Inicio]=1,' + replicate(convert(nvarchar(max),N' '),30000) + N'[Fin]=999'
select [datalength @sql] = datalength(@sql)
set @sql = N'select [Inicio]=1,' + replicate(convert(nvarchar(max),N' '),30000) + N'[Fin]=999'
select [datalength @sql] = datalength(@sql)
Que esta pasando??!!!
No alcanzo a comprender como solucionar esto