studio refactor query parser ordenar online management indentar codigo sql-server formatting ssms

sql server - refactor - SSMS Results to Grid: CRLF no se conserva en copiar/pegar. ¿Alguna técnica mejor?



sql formatter notepad++ (4)

Cuando tengo un conjunto de resultados en la cuadrícula como:

SELECT ''line 1 line 2 line 3''

o

SELECT ''line 1'' + CHAR(13) + CHAR(10) + ''line 2'' + CHAR(13) + CHAR(10) + ''line 3''

Con CRLF incrustado, la pantalla en la cuadrícula parece reemplazarlos con espacios (supongo que para que muestren todos los datos).

El problema es que si estoy generando código en un script, no puedo simplemente cortar y pegar esto. Tengo que convertir el código para abrir un cursor e imprimir las columnas relevantes para poder copiarlas y pegarlas desde los resultados del texto.

¿Existe alguna solución más sencilla para conservar el CRLF en una operación de copiar / pegar desde la cuadrícula de resultados?

La razón por la que la cuadrícula es útil es que actualmente estoy generando una serie de scripts para el mismo objeto en diferentes columnas: un bcp out en una columna, un archivo de formato xml en otra, un script de creación de tablas en otra, etc.



Este problema se solucionó en SSMS 16.5 compilación 13.0.16000.28 con la adición de una opción para conservar CR / LF en copiar / guardar ( más detalles ) ( error de conexión ).

  1. Herramientas> Opciones
  2. Expandir Resultados de la consulta> SQL Server> Resultados a la cuadrícula
  3. Marque Retener CR / LF en la copia o guardar
  4. Reiniciar SSMS

Esto hará que CR , LF y CRLF se traten como líneas nuevas cuando copie una celda.


Una cosa que puede hacer es enviar los resultados a un archivo, luego usar un editor capaz de ver un archivo en busca de cambios que tengan capacidades superiores para comprender la salida.


es un hack, pero prueba esto:

envuelva su conjunto de resultados en una REEMPLAZO (....., CHAR (13) + CHAR (10), CHAR (182)) para conservar los saltos de línea, luego puede reemplazarlos nuevamente

SELECT REPLACE (''line 1'' + CHAR(13) + CHAR(10)+ ''line 2'' + CHAR(13) + CHAR(10) + ''line 3'' ,CHAR(13)+CHAR(10),CHAR(182) )

SALIDA:

---------------------- line 1¶line 2¶line 3 (1 row(s) affected)

Reemplazarlos nuevamente en SQL:

select replace(''line 1¶line 2¶line 3'',CHAR(182),CHAR(13)+CHAR(10))

salida:

------------------- line 1 line 2 line 3 (1 row(s) affected)

o en un buen editor de texto.