Exibindo textos grandes no SSMS

Penso que todos que já trabalharam com textos em colunas ou variáveis do tipo varchar(max), nvarchar(max), text e ntext, já se depararam no SSMS (SQL Server Management Studio) com um texto incompleto após um PRINT ou até mesmo na exibição das consultas.

Para simular uma situação, vou criar um texto absurdo com uma query from hell:

DECLARE @TEXT VARCHAR(MAX) = ''
;WITH CTE AS (
  SELECT 1 AS ID
  UNION ALL
  SELECT ID + 1
  FROM CTE
)
SELECT TOP 10000 @TEXT = @TEXT
+ CAST(NEWID() AS CHAR(36))
+ ' : ' + CAST(ID AS VARCHAR)
+ ' : ' + CAST(LEN(@TEXT) AS VARCHAR)
+ CHAR(13)
FROM CTE
OPTION (MAXRECURSION 0)

Agora no PRINT, o que temos:

E ai, cadê o texto? Ok, então apelar para o SELECT!

E vamos copiar o resultado para outro lugar:

O texto esta incompleto!? Mas até um texto de um pouco mais de 43.625 caracteres (65.535, segundo as configurações do SSMS) não temos problemas, fora as linhas que não ficam organizadas…

Mas o que é aquele “XML data” nas configurações? Isso quer dizer que podemos tentar o XML? Ok, então vamos tentar… qualquer coisa apelar mais um pouco, aumentando o limite do XML nas configurações…

Só um clique no resultado…

Ei, 10000 linhas, algo superior a 526662 caracteres? Isso quer dizer deu certo? Na verdade +/-, pois alguns caracteres especiais podem causar problemas, assim a alternativa será utilizar outra sintaxe, que fará o encode destes caracteres (http://www.w3schools.com/tags/ref_ascii.asp), exemplo:

Então pessoas, fica a sintaxe final e até a próxima semana!

SELECT @TEXT FOR XML PATH('')
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s