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.