2010-11-27 2 views
1

가능한 중복 :
SQL Server Management Studio: Increase number of characters displayed in result set
업데이트 : 참고 :이 토론 답변으로 표시된 오답이 포함되어 있습니다. SQL 서버 2008 R2에서SQL Server 데이터베이스에서 max> 65535 인 nvarchar (max) 값을 시각화하려면 어떻게합니까?

SSMS는 모드 "그리드 결과"모드에서 65535 "를 텍스트로 결과"에 8192 개 문자의 최대 시각화 할 수있게한다. "파일 결과"도 잘립니다.

내가 선택한 더 큰 크기의 값을 빠르고 저렴하게 보려면 어떻게해야합니까?

업데이트 :
이전 토론을보고 가장 좋은 대답은 내 프런트 엔드 앱을 만드는 것입니다. 실제로 대답이 아닙니다.
DBMS 클라이언트 도구 공급 업체와 경쟁 할 계획이 아닙니다.
나는 도구가 아닌 도구 일뿐 아니라 값을 빠르고, 더럽고 값 싸게 볼 필요가 있습니다.

저는 단일 값을보기 위해 클라이언트 응용 프로그램을 만들어야하며 트릭이나 방법이 없다고 생각합니다.

+0

관련 : http://stackoverflow.com/questions/1908271/ 및 http://stackoverflow.com/questions/952247/ – Tomalak

+0

나는 그 링크를보고 그들은 어떤 대답을 포함하지 않습니다. 이 질문에 답하지 않았습니다. –

+1

이 질문을 한 지 거의 한 시간이 지났습니다. 값을 쿼리하고 약 5 분 안에 텍스트 상자에 던져 넣을 간단한 응용 프로그램을 작성할 수 있습니다. 임시 해결책을 찾는 것은 실제로 당신의 시간의 능률적 인 사용입니까? (아니, 아니, 하나도 없어) – Donnie

답변

-1

프런트 엔드 응용 프로그램에서 볼 수 있습니다. SSMS는 일반 데이터 뷰어로 설계되지 않았습니다.

+2

SSMS는 일반 데이터 뷰어로 설계되었습니다. 특히 MSSQL을 목표로하고 있으며 MSSQL이 큰 텍스트/얼룩을 지원하기 때문에 Management Studio가이를 표시 할 수 있어야합니다. MS의 누군가가 게으른 사람이었습니다. –

+1

@Pavel : SQL Server * Management * Studio가 아닌 Data Visualization * Studio입니다. SSMS 팀이 대단히 큰 텍스트 블록을 표시 할 수있는 유효하고 신뢰할 수있는 방법을 고안하는 데 시간을 할애 할 필요는 없습니다. –

+1

@Pavel - 아니요, SSMS는 임의의 데이터를 시각화하지 않고 서버를 관리하기위한 것입니다. – Donnie

1

문제는 SQLPSX 코드 플렉스 프로젝트의 PowerShell 모듈을 sqlise에서 공격합니다 (미안하지만 하이퍼 링크에서만 사용할 수 있습니다). PowerShell ISE는 PowerShell V2의 일부인 통합 스크립팅 환경입니다. SQLPSX는 MS-SQL 서버 관리 및 쿼리를 목표로하는 PowerShell 모듈 모음입니다 (또한 ORACLE에 대한 최소 지원도 포함). ISE의 ​​일반적인 출력 창에는 잘못된 잘라 내기/줄 바꿈 동작이 있지만 편집기 창으로 출력을 보낼 수 있습니다. 한 열로 된 넓은 결과 집합의 한 행을 가져 와서 출력 형식으로 'inline'또는 'isetab'을 사용하는 쿼리를 사용하면 완전한 varchar (max), text, CLOB를 얻을 수 있습니다 (예, ORACLE에서도 가능) 값. 이러한 열이있는 단일 행을 쿼리하는 경우 결과는 포함 된 줄 바꿈에 따라 달라지며 너비는 10000 자/줄로 설정됩니다. 그러나 이것은 스크립트 언어로되어 있으며 사용자가 직접 수정할 수 있습니다.

순수 T-SQL 솔루션을 선호하는 경우 내 프로젝트 Extreme T-SQL Script http://etsql.codeplex.com/의 원본을 볼 수 있습니다. 스크립트 print_string_in_lines.sql 및 sp_gentextupdate.sql을 사용하면 필드를 현재 내용으로 설정하는 업데이트 스크립트를 생성하는 도구를 사용할 수 있습니다. 내부적으로 varchar (max)를 사용하기 때문에 SQL-SERVER 2008이 필요합니다.

BTW SQL Server 2008 R2에 액세스 할 수 없습니다. 제한은 여전히 ​​텍스트 열당 약 4000 자이지만

는 내가 그것을 좋아하는, 즉 번드

2

신속하고 더러운 도움이되기를 바랍니다. 물론 Management Studio 내부에서 수행 할 수 있습니다. 창의력이 작아야합니다. 아이디어는 간단합니다 - 전체 문자열을 표시 할 수 없습니까? 그것을 자르고 더 많은 행을 표시하십시오. 다음은 varchar 입력을 사용하고 지정된 크기의 청크가있는 테이블을 출력하는 함수입니다. 그런 다음이 기능을 사용하여 원본 테이블에서 APPLY를 선택하고 필요한 것을 얻을 수 있습니다.

기능 :

create function Splitter(@string varchar(max), @pieceSize int) 
returns @t table(S varchar(8000)) 
as 
begin 
    if (@string is null or len(@string) = 0) 
     return 

    set @pieceSize = isnull(@pieceSize, 1000)  
    if (@pieceSize < 0 or @pieceSize > 8000) 
     set @pieceSize = 8000 

    declare @i int = 0 
    declare @len int = len(@string) 

    while (@i < @len/@pieceSize ) 
    begin 
     insert into @t(S) values(substring(@string, @i * @pieceSize + 1, @pieceSize)) 
     set @i = @i + 1 
    end 

    if (@len % @pieceSize) != 0 
    begin 
     if (@len/@pieceSize) = 0 
      set @i = 1 

     insert into @t(S) values(substring(@string, (@i - 1) * @pieceSize + 1, @len % @pieceSize)) 
    end 
    return  
end 



사용 예 :

select t.ID, t.Col1, t.Col2, t.Col3, pieces.S 
from dbo.MyTable as t 
cross apply dbo.Splitter(t.MybigStringCol, 1000) as pieces 
1
Select 
    CASE WHEN T.TheSegment = 1 Then Cast(T.SomeID as varchar(50)) 
     Else '' 
    End as The_ID 
    , T.ChoppedField 
From (
    Select SomeID 
     , 1 as TheSegment 
     , substring(SomeBigField, 1, 8000) as ChoppedField 
    from sometable 
    Union All 
    Select SomeID 
     , 2 
     , substring(SomeBigfield, 8001, 16000) 
    from sometable 
) as t 
order by t.SomeID, t.TheSegment; 

린스하고 필요한 경우 노동 조합에 반복하거나받을 주시기 재귀; 16,000자를 넘는 독서를 좋아할 것입니다. 그것이 얻는만큼 싸게.

여러 번 큰 필드에는 포맷팅 문자가 포함되어 있으므로 사용자 자신의 양식을 만들고 리치 텍스트 컨트롤을 사용하는 것이 좋습니다.

9

XML로 데이터 세트를 반환하고 크기 제한이없는 이유는 무엇입니까? 이렇게하려면 캐스트 (XML로 COLUMN_NAME)를 사용하여이 작업을 수행 할 수 있습니다.

alt text

+3

유효한 XML'' ''을 사용하여 열을 둘러 쌉니다. 주의 :'CDATA' 블록에도 불구하고, 제어 문자와 같은 몇몇 문자를 여전히 XML로 대체해야 할 수도 있습니다. – Zarepheth

관련 문제