Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come si visualizza il contenuto completo di una colonna di testo o varchar(MAX) in SQL Server 2008 Management Studio?

SSMS consente solo dati illimitati per i dati XML. Questa non è l'impostazione predefinita e deve essere impostata nelle opzioni.

Un trucco che potrebbe funzionare in circostanze piuttosto limitate è semplicemente denominare la colonna in un modo speciale come di seguito in modo che venga trattata come dati XML.

DECLARE @S varchar(max) = 'A'

SET @S =  REPLICATE(@S,100000) + 'B' 

SELECT @S as [XML_F52E2B61-18A1-11d1-B105-00805F49916B]

In SSMS (almeno dalle versioni 2012 alla 18.3 attuale) questo mostra i risultati come di seguito

Facendo clic su di esso si aprono i risultati completi nel visualizzatore XML. Scorrendo verso destra viene visualizzato l'ultimo carattere di B conservato,

Tuttavia questo presenta alcuni problemi significativi. L'aggiunta di colonne aggiuntive alla query interrompe l'effetto e le righe aggiuntive vengono tutte concatenate con la prima. Infine se la stringa contiene caratteri come < l'apertura del visualizzatore XML non riesce con un errore di analisi.

Un modo più affidabile per eseguire questa operazione che evita problemi di conversione di < in SQL Server a < ecc. o fallire a causa di questi personaggi è di seguito (accredita Adam Machanic qui).

DECLARE @S varchar(max)

SELECT @S = ''

SELECT @S = @S + '
' + OBJECT_DEFINITION(OBJECT_ID) FROM SYS.PROCEDURES

SELECT @S AS [processing-instruction(x)] FOR XML PATH('')