none
SQL Server Management Studio(SSMS)로 프로시저 실행 시, 실행결과 메세지를 모두 볼 수 있는 방법이 없나요? RRS feed

  • 질문

  • 안녕하세요 SSMS를 사용하다 문의 사항이 생겨서 도움을 얻고 싶어서 질문 드립니다.

    개발시, 모든 ms-sql 쿼리를 프로시저를 작성하도록 한 시스템이 있습니다.

    쿼리를 보고 싶어서 프로시저 끝에 'print' 명령을 이용해서 쿼리를 담은 변수를 출력 하도록 하였습니다.

    실행하면, 화면의 하단에 그리드에 출력된 결과가 보이고, '메세지' 탭에  print를 이용해서 출력한 내용이 찍히는데

    쿼리가 너무 길어서 끝까지 보이지 않고, 잘려 버립니다.

    혹시, 잘리지 않고 모두 볼 수 있는 옵션이나 방법이 있을까요?

    다른 툴을 이용해도 잘 안되네요,,,

    방법이 있을까요?

    2015년 2월 10일 화요일 오전 1:15

답변

  • SSMS에서 옵션이 없는 것으로 알고 있습니다. 

    SQLCMD 경우 보이는것으로 알고 있습니다. 해당 툴을 사용해 보시기 바랍니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.
       
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다

    2015년 2월 10일 화요일 오전 6:39
    중재자
  • 안녕하세요.

    Print문 자체가 8000 자 밖에는 출력할 수 없습니다.

    https://msdn.microsoft.com/ko-kr/library/ms176047.aspx

    PRINT문으로 쿼리를 출력하는 경우 8000 자가 넘는다면, 일단 두가지 방법이 있을 것 같습니다.

    일단 당연히 쿼리를 varchar(max)nvarchar(max) 변수에 넣었다고 가정합니다.

    1. 만약 쿼리 길이가 16000 자가 넘지 않는다면, 아래 방법을 사용해 보세요. 제일 간단합니다.

    PRINT CAST(@query AS TEXT)

    2. 두번째 방법은 string을 parsing해서 8000 byte 씩 나눠서 PRINT 해주는 함수나 프로시저를 작성해야 합니다.

    이건 웹에서 검색해보면 많이 나옵니다. 

    ----------------------------------------------------------------

    만약 PRINT문을 사용하지 않아도 된다면, SELECT 문으로 찍어보면 더 길게 결과가 나옵니다.

    SELECT 문으로 결과를 출력한 후 copy & paste로 새쿼리창에 붙여서 보시면 내용을 확인할 수 있습니다.

    SELECT @query

    "옵션 -> 쿼리 결과 -> SQL Server -> 표 형태로 결과 표시" 설정에는 65535 자까지 표시된다고 하는데, 2008R2와 2012 SSMS에서는 43680 자까지만 출력되네요. (2005 SSMS는 65535자 모두 표시 됩니다.)

    ----------------------------------------------------------------

    마지막으로 65535 자 이상의 결과가 필요하다면 아래 방법을 사용할 수 있습니다.

    SELECT CAST('<root><![CDATA[' + @query+ ']]></root>' AS XML)

    결과를 클릭하면 새 창에서 해당 결과에서 <root>와 </root> 부분만 빼고 보시면 됩니다.

    도움이 되셨으면 좋겠습니다. 

    Younggun Kim

    MVP, MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com




    2015년 2월 10일 화요일 오전 11:48

모든 응답

  • SSMS에서 옵션이 없는 것으로 알고 있습니다. 

    SQLCMD 경우 보이는것으로 알고 있습니다. 해당 툴을 사용해 보시기 바랍니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.
       
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다

    2015년 2월 10일 화요일 오전 6:39
    중재자
  • SQL 서버 버전과 쿼리 내용은 언급되지 않아 모르겠지만  동적 SQL로 쿼리를 조합하시는것 같은데요.

    일단 메시지 탭으로 결과를 보시려면 최대 문자수가 256자가 기본값이니 1024 등으로 수정하여 테스트해보십시오.

    도구 -> 옵션 -> 쿼리 결과 -> SQL Server -> 텍스트로 결과표시 , 각 열에 표시할 최대 문자 수


    Hong-ju

    2015년 2월 10일 화요일 오전 11:06
  • 안녕하세요.

    Print문 자체가 8000 자 밖에는 출력할 수 없습니다.

    https://msdn.microsoft.com/ko-kr/library/ms176047.aspx

    PRINT문으로 쿼리를 출력하는 경우 8000 자가 넘는다면, 일단 두가지 방법이 있을 것 같습니다.

    일단 당연히 쿼리를 varchar(max)nvarchar(max) 변수에 넣었다고 가정합니다.

    1. 만약 쿼리 길이가 16000 자가 넘지 않는다면, 아래 방법을 사용해 보세요. 제일 간단합니다.

    PRINT CAST(@query AS TEXT)

    2. 두번째 방법은 string을 parsing해서 8000 byte 씩 나눠서 PRINT 해주는 함수나 프로시저를 작성해야 합니다.

    이건 웹에서 검색해보면 많이 나옵니다. 

    ----------------------------------------------------------------

    만약 PRINT문을 사용하지 않아도 된다면, SELECT 문으로 찍어보면 더 길게 결과가 나옵니다.

    SELECT 문으로 결과를 출력한 후 copy & paste로 새쿼리창에 붙여서 보시면 내용을 확인할 수 있습니다.

    SELECT @query

    "옵션 -> 쿼리 결과 -> SQL Server -> 표 형태로 결과 표시" 설정에는 65535 자까지 표시된다고 하는데, 2008R2와 2012 SSMS에서는 43680 자까지만 출력되네요. (2005 SSMS는 65535자 모두 표시 됩니다.)

    ----------------------------------------------------------------

    마지막으로 65535 자 이상의 결과가 필요하다면 아래 방법을 사용할 수 있습니다.

    SELECT CAST('<root><![CDATA[' + @query+ ']]></root>' AS XML)

    결과를 클릭하면 새 창에서 해당 결과에서 <root>와 </root> 부분만 빼고 보시면 됩니다.

    도움이 되셨으면 좋겠습니다. 

    Younggun Kim

    MVP, MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com




    2015년 2월 10일 화요일 오전 11:48