SSMS에서 ntext 또는 nvarchar (max)의 모든 텍스트를 어떻게 봅니까?


193

SQL Server Management Studio에서 NTEXT 또는 NVARCHAR (max)의 모든 텍스트를 어떻게 봅니까? 기본적으로 처음 몇 백 자 (255?) 만 반환하는 것처럼 보이지만 때로는 프로그램을 작성하지 않고도 전체 필드를 빠르게 볼 수있는 방법을 원할 때가 있습니다. SSMS 2012조차도 여전히이 문제가 있습니다.


답변:


91

옵션 (쿼리 결과 / SQL Server / 그리드 페이지에 대한 결과)

현재 쿼리의 옵션을 변경하려면 쿼리 메뉴에서 쿼리 옵션을 클릭하거나 SQL Server 쿼리 창에서 마우스 오른쪽 단추를 클릭하고 쿼리 옵션을 선택하십시오.

...

검색된 최대 문자
각 셀에 표시 될 최대 문자 수를 지정하려면 1에서 65535 사이의 숫자를 입력하십시오.

보시다시피 최대 값은 64k입니다. 기본값은 훨씬 작습니다.

텍스트에 대한 BTW 결과 에는 훨씬 더 엄격한 제한이 있습니다.

각 열에 표시되는 최대 문자
수이 값의 기본값은 256입니다. 자르지 않고 더 큰 결과 집합을 표시하려면이 값을 늘리십시오. 최대 값은 8,192입니다.


1
Remus가 자신의 답변에서 썼 듯이 MAX로 정의 된 열의 데이터 유형에 대한 최대 스토리지 크기는 2GB이므로 모든 데이터를 SSMS에 표시하는 것이 번거로울 수 있기 때문에 약간의 제한이 있기 때문에 제한이 있습니다.
Ivan G

13
@IvanG-실제로는 아닙니다. XML과 같은 방식으로 하이퍼 링크 될 수 있으며 클릭하면 새 창에서 열립니다. 내가 일반적으로 사용하는 해결 방법은 여기와 같이 XML 캐스팅하는 입니다. 무제한 길이를 허용하도록 XML 데이터를 설정할 수 있습니다.
Martin Smith

@MartinSmith 흥미 롭기 때문에 SSMS에 이러한 많은 양의 데이터를 표시 할 수 있습니다.
Ivan G

11
문자 수가 65535 미만인 경우에만 작동하며, 이는 ntext 최대 값보다 먼 길이입니다.
Polyfun

1
@IvanG조차 '결과 파일에'라는 한계가 있습니다.
Iain

217

NVARCHAR (MAX) 열에서 전체 텍스트 (99,208 자)를 열에서 해당 열만 (결과 그리드)를 선택한 다음 마우스 오른쪽 단추를 클릭하고 결과를 CSV 파일로 저장하여 전체 텍스트 (99,208 자)를 얻을 수있었습니다. 결과를 보려면 텍스트 편집기 (Excel 아님)로 CSV 파일을여십시오. 재미있게도 동일한 쿼리를 실행하려고했지만 결과를 파일로 설정하면 결과 대 텍스트 제한을 사용하여 출력이 잘 렸습니다.

@MartinSmith가 (현재) 승인 된 답변에 대한 설명으로 설명 한 해결 방법이 저에게 효과적이지 않습니다 ( '['문자, 16 진수 값 0x5B에 대해 불평하는 전체 XML 결과를 보려고 할 때 오류가 발생했습니다) 이름에 포함 ").


17
마우스 오른쪽 버튼을 클릭하고 다른 이름으로 저장하면 CSV로 NTEXT 필드에서 큰 텍스트 값을 얻는 것이 매력적이었습니다.
David Alpert

3
@ajeh : 어떤 SSMS 2012 버전을 사용하고 있습니까? SSMS 2012 (버전 11.0.5343.0)를 사용하여 방금 테스트를 거쳤으며 (응답에 설명 된 것과 동일한 정확한 단계를 따랐습니다) 작동합니다
Eric

8
그러나 Excel에서 열지 마십시오. CSV 가져 오기는 데이터를 다시 자릅니다. :)
Johncl 2012

1
덕분에 SSMS 2012를 사용하여 varchar (max) 필드에서 7MB의 텍스트 데이터를 내보낼 수있었습니다.
Brian Hasden

2
탭으로 구분 된 텍스트로 저장하면 더 좋습니다. csv 형식은 텍스트의 모든 따옴표를 두 배로 늘립니다.
davidthegrey

140

빠른 트릭

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629

6
이것은 열의 내용이 실제로 XML
axk

2
이것은 저에게도 효과적이었습니다 .ms sql에서 나가기 위해 필요한 JSON 데이터가 있습니다.
Dev_Corps

1
또한 내용이 XML 이스케이프됩니다. 텍스트를 꺼내면 freeformatter.com과 같은 도구를 사용하여 텍스트를 이스케이프 처리해야합니다.
harsimranb 2016 년

이것은 나를 위해 일했다 :```DECLARE @g geography; ... Cast (@ g.ToString ()을 XML로 선택); ```
Sergei Zinovyev

1
이것은 다른 솔루션에 의해 잘린 250kb json 문자열을보기 위해 SSMS v18에서 나를 위해 일했습니다. 또한 텍스트 뷰어에 대한 링크를 제공하기 때문에 마음에 듭니다. +!
Roberto

54

SSMS 용 추가 기능을 작성했으며이 문제가 해결되었습니다. 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

"현재 셀 1 : 1 복사"를 사용하여 원본 셀 데이터를 클립 보드에 복사 할 수 있습니다.

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks원본 셀 내용 복사

또는 "셀 시각화 도구"기능을 사용하여 외부 텍스트 편집기 (메모장 ++ 또는 메모장)에서 셀 내용을 열 수도 있습니다. http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers

(기능을 사용하면 외부 응용 프로그램에서 필드 내용을 열 수 있으므로 텍스트임을 알고 있다면 텍스트 편집기를 사용하여 열 수 있습니다. 내용이 그림과 함께 이진 데이터 인 경우 그림으로보기를 선택합니다. 아래 샘플은 그림 열기를 보여줍니다. ) :SSMS 결과 그리드 시각화 도구


2
정말 유용한 확장으로 보이지만 상용 제품 (또는 시험판)이 필요하므로 답변으로 받아 들일 수 없습니다. 그래도 고마워!
NickG

4
+1 완벽하게 작동하는 멋진 무료 확장 프로그램 ... 감사합니다!
리스폰

2
고마워, 이것은 내가 원하는 것을 정확하게합니다.
Derreck Dean

9
불행히도 2017 년 9 월 4 일 현재 SSMS Boost는 더 이상 무료가 아닙니다 (새 버전이 출시 될 때마다 30 일 평가판 제외)
csrowell

4
이것은 현재 상용 제품이며, 무료 라이센스는 언급 된 기능을 포함하지 않으며, 비활성화되어 있으며 PRO 버전을 구매할 수있는 팝업이 표시됩니다. 대답은 그의 소프트웨어에 대한 홍보 일뿐입니다.
metabuddy

3

데이터를 XML로 반환

SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'

예상 결과에 따라 SSMS 옵션 창에서 적절한 제한을 설정하십시오. 여기에 이미지 설명을 입력하십시오

당신이 반환하고 텍스트와 같은 인코딩되지 않은 문자를 포함하지 않는 경우에 작동 &대신 &amp;하는 XML 변환이 실패 할 것입니다.

PowerShell을 사용하여 데이터 반환

이를 위해서는 명령을 실행할 시스템에 PowerShell SQL Server 모듈이 설치되어 있어야합니다.

모두 설정 되었으면 다음 스크립트를 구성하고 실행하십시오.

Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"

-MaxCharLength매개 변수를 필요에 맞는 값으로 설정하십시오 .


1

대안 1 : 마우스 오른쪽 버튼으로 셀을 복사하고 텍스트 편집기에 붙여 넣기 (utf-8 지원)

대안 2 : 마우스 오른쪽 버튼을 클릭하고 CSV 파일로 내보내기

대안 3 : SUBSTRING 기능을 사용하여 컬럼의 일부를 시각화하십시오. 예:

id = 123456 인 mytable에서 SUBSTRING (fileXml, 2200,200)을 선택하십시오.


0

당신이 그것을 볼 필요가 있다면, 나는 이것을 사용했습니다 :

print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)

결과적으로 SMSS의 메시지 창에 줄 바꿈과 모든 내용이 표시됩니다. 물론 단일 셀만 허용합니다. 여러 행에서 단일 셀을 수행하려면 다음을 수행하십시오.

declare @T varchar(max)=''
select @T=@T
       + isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
       + replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T

이것을 사용하여 SQL 코드로 생성 된 JSON 문자열의 유효성을 검사합니다. 그렇지 않으면 읽기가 너무 어렵습니다!


-1

큰 varchar / text 열을 빠르게 볼 수있는 가장 쉬운 방법 :

declare @t varchar(max)

select @t = long_column from table

print @t

11
그러나 텍스트는 여전히 :-(립니다
라스무스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.