Estoy tratando de usar sqlcmd en una máquina de Windows que ejecuta SQL Server 2005 para escribir una consulta en un archivo csv. Las opciones de línea de comandos que normalmente utilizamos son:sqlcmd - ¿Cómo superar el límite de longitud de columna sin espacios vacíos?
-l 60 -t 300 -r 1 -b -W -h -1
Sin embargo, las columnas se quedan truncados a 256 bytes. En un intento por evitar esto, he intentado usar esta opción de línea de comandos en lugar del -W:
-y 8000
Esto captura los campos enteros, pero el problema con este método es que el archivo de globos hasta poco más de 1 MB que aproximadamente 200mb debido a todo el espacio extra (me doy cuenta de que 8000 es probablemente excesivo, pero probablemente tendrá que ser de al menos 4000 y actualmente solo estoy trabajando con un pequeño subconjunto de datos). La opción -W generalmente elimina todo este espacio extra, pero cuando intento usarlos juntos, me dice que son mutuamente exclusivos.
¿Hay alguna manera de obtener sqlcmd alrededor de este límite, o alguien sabe si otro programa (como bcp o osql) lo haría más fácil?
Editar: Éstos son los fragmentos de código que estamos usando para obtener el campo que está siendo truncado (código similar se utiliza para un grupo de campos):
SELECT ALIASES.AliasList as complianceAliases,
. ..
LEFT OUTER JOIN (Select M1.ID, M1.LIST_ID,stuff((SELECT '{|}' + isnull(Content2,'')+' '+isnull(Content3,'')+' '+isnull(Content4,'')+' '+isnull(Content5,'')+' '+isnull(Content6,'')+' '+isnull(Content7,'')
FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M2 with (nolock)
WHERE M1.LIST_ID = M2.LIST_ID and M1.ID = M2.ID and M1.TYPE = M2.TYPE
FOR XML PATH('')
),1,1,'') as AliasList
FROM fs_HOST3_TEST_web.ISI_APP_COMP_MULTI M1 with (nolock)
WHERE M1.LIST_ID = 2001 AND M1.TYPE = 'Aliases'
GROUP BY m1.list_id,m1.ID,m1.Type) as ALIASES
ON ALIASES.LIST_ID = PAIR.COMP_LIST_ID AND ALIASES.ID = PAIR.COMP_ID
¿Qué tipo de datos son los datos truncados, por favor? – gbn
Estamos concatenando múltiples campos nvarchar (500) en un solo campo usando una combinación de la función stuff y el comando FOR XML PATH. No estoy realmente seguro de cómo funcionan exactamente (encontramos la solución a través de Google), pero terminamos con todos ellos en el mismo campo y los estamos sacando a través de una declaración seleccionada. Editaré la respuesta e incluiré el código. –