T-SQL에서 디버그 타임에 테이블 변수의 값을 보는 방법은 무엇입니까?


187

디버그 시간 동안 SSMS (SQL Server Management Studio)의 테이블 값 변수에서 값 (행과 셀)을 볼 수 있습니까? 그렇다면 어떻게?

여기에 이미지 설명을 입력하십시오

답변:


31

이 Microsoft Connect 링크에 따라 아직 구현되지 않았습니다 : Microsoft Connect



2
그리고 우리는 2016 년에 있습니다. 연결 링크도 더 이상 작동하지 않습니다.
— dotNET

5
솔직히 말해서 이것은 실제로 대답이 아닙니다. 질문에 대답하지 않기 때문에, 질문은 그것을 수행하는 방법입니다 (SSMS에 대한 기능이 있는지 여부가 아님). 매우 도움이됩니다.
— Răzvan Flavius ​​Panda

1
이 답변을 삭제하십시오. 아래 답변이 허용 된 답변이어야합니다.
— Vortex852456

2018 년, 여전히 그렇습니다.
— AgentFire

317
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)

위의 내용을 테이블 내용을 보려는 지점에 삽입하십시오. 테이블의 내용은 로컬 창에서 XML로 렌더링되거나 @v시계 창에 추가 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오


1
이것은 작은 테이블을 XML로 표시하기에 충분한 해결 방법입니다.
— Faiz

4
그러나 여전히 독서를 멈추지 마십시오! 아래의 또 다른 멋진 옵션! 큰 실 !!
— Mike M

1
XML이 읽기 쉽지 않은 큰 테이블이 있습니다. XML을 복사하고 xmlgrid.net에 붙여 넣는 또 다른 단계를 수행 하면 XML을 테이블로 볼 수 있습니다. 테이블 시각화가 실제로 도움이됩니다. Visual Studio의 데이터 테이블 뷰어와 같은 테이블 뷰어가있는 SSMS 릴리스를 기다리는 중입니다.
— Moiz Tankiwala 1

1
", OROT ( 'rootNodeName')"을 "FOR XML"절에 추가 할 수 있습니다. 이것은 단일 루트 아래에 여러 행 (있는 경우)을 수집하여 텍스트 시각화 도구 대신 XML 시각화 도구로 볼 수있는 유효한 XML 문서를 만듭니다.
— JohnL4

2
SQL Server 2016을 사용하거나 전혀 사용하지 않는 JSON 버전도 사용할 수 있습니다 DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
— Sousuke

18

이 프로젝트 https://github.com/FilipDeVos/sp_select 에는 sp_select임시 테이블에서 선택할 수 있는 저장 프로 시저 가 있습니다.

용법:

exec sp_select 'tempDb..#myTempTable'

저장 프로 시저를 디버깅하는 동안 새 탭을 열고이 명령을 실행하여 임시 테이블의 내용을 볼 수 있습니다.


6
임시 테이블에는 적합하지만 테이블 변수에는 적합하지 않음
— Harag

열린 트랜잭션이있는 경우에도 정지되므로 테스트 시작시 항상 트랜잭션을 여는 tSQLt와 같은 프레임 워크에서 테스트 디버깅을 사용하는 경우 많이 사용하지 마십시오.
— Nathan

1
와우 와우 와우
— vothaison

양호-하나 또는 두 개의 열로 정렬 할 수 있다면 좋을 것입니다
— user2486488

6

저장 프로 시저에서 전역 임시 테이블 ## temptable을 만들고 저장 프로 시저 내에 테이블의 데이터를이 임시 테이블에 삽입하는 삽입 쿼리를 작성하십시오.

이 작업이 완료되면 새 쿼리 창을 열어 임시 테이블의 내용을 확인할 수 있습니다. "select * from ## temptable"을 사용하십시오.


1

선택 쿼리를 사용하여 확인하려는 테이블을 다양하게 표시하십시오.

http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/


예, 가장 빠르고 빠른 옵션에 동의했습니다. 이 작업을 수행하고 더 많은 제어가 필요한 경우 실행할 SQL 만 강조 표시하고 실행하십시오.
— Jammin

2
조사 식 창에서 select query를 사용 하시겠습니까?
— Faiz

프로 시저 내부에서 select 또는 실행중인 임의의 adhoc 쿼리를 사용하십시오.
— solairaja 2009

그러나 테스트해야 할 것은 테이블 값 함수이며 "함수에 포함 된 Select 문은 클라이언트에 데이터를 반환 할 수 없습니다"라는 오류가 발생합니다. 제공된 디버깅 도구를 통해 특별히 검사 할 다른 방법이 있습니까?
— Faiz

3
아니요, 문제가 해결되지 않습니다. 추가 플러그인이 없으면 이것이 불가능하다고 생각합니다.
— Faiz

1

SQL Server 2016 이상을 사용하는 경우이를 JSON 결과로 선택하여 JSON Visualizer에 표시 할 수 있으며 XML보다 훨씬 쉽게 읽고 결과를 필터링 할 수 있습니다.

DECLARE @v nvarchar(max) = (SELECT * FROM Suppliers FOR JSON AUTO)

여기에 이미지 설명을 입력하십시오


0

플러그인이 없으면 이것이 불가능하다는 결론에 도달했습니다.


Visual Studio 2010의 일부 미리보기를 보았습니다. 매우 훌륭하고 복잡하며 상세하며 데모 테이블은 임시 테이블을 디버그 모드에서 볼 수 있는지 알지 못했습니다. 아마도 석방되었을 때 숨을 쉬지 않을 것입니다.
— Philip Kelley

0

SQL Server 프로파일 러 2014에는 테이블 값 매개 변수의 내용이 나와 있습니다. 이전 버전에서도 작동 할 수 있습니다. Stored Procedures 그룹 및 TextData 열에서 SP : Starting 또는 RPC : Completed 이벤트를 활성화하고 로그에서 항목을 클릭하면 테이블 변수에 대한 insert 문이 있습니다. 그런 다음 텍스트를 복사하여 Management Studio에서 실행할 수 있습니다.

샘플 출력 :

declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')

exec uspWhatever @PARAM=@p1

-1

왜 테이블을 선택하고 그런 식으로 변수를 보지 않겠습니까?

SELECT * FROM @d

4
어떻게해야하는지 설명 해주세요. SELECT * FROM @Table디버깅중인 스크립트에 a 를 추가해도 결과 창에 결과가 표시되지 않습니다.
— StingyJack

-3

죄송합니다, 나는 파티에 조금 늦었지만 나중에이 질문을 우연히 본 사람이라면 저장 프로 시저 에서이 작업을 수행하는 가장 쉬운 방법은 다음과 같습니다.

  1. 맨 위에 프로 시저 매개 변수를 선언하고 초기화하여 새 쿼리를 작성하십시오.
  2. 절차 본문에 붙여 넣습니다.
  3. 테이블 변수가 데이터로 초기화 된 직후에 구식의 선택 쿼리를 추가하십시오.
  4. 프로 시저에서 3.이 마지막 명령문이 아닌 경우 동일한 행에 중단 점을 설정하고 디버깅을 시작한 후 중단 점으로 계속 진행하십시오.
  5. 이익!!

messi19의 대답은 받아 들일 수있는 IMHO이어야합니다. 왜냐하면 내 것보다 간단하고 대부분 의 일 을하기 때문입니다.하지만 나와 같은 사람이고 검사하려는 루프 내부에 테이블 변수가 있으면이 작업을 훌륭하게 수행합니다. 너무 많은 노력이나 외부 SSMS 플러그인없이.


이것은 OP가 시도하는 것과 완전히 반대입니다.
— Jamie Marshall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.