2011-01-19 4 views
2

전체 스크립트의 끝에 도달하기 전에 Select 문 결과를 SQL Server Management Studio의 출력 창에 강제로 표시하는 방법이 있습니까?SQL Server 스크립트 끝나기 전에 Select 문을 출력 창으로 출력

신속하게 실행되는 하나의 선택 쿼리와 실행 시간이 걸리는 쿼리가 있습니다. 두 번째 쿼리가 실행되는 동안 첫 번째 쿼리의 결과를보고 싶습니다.

내 문제는 두 변수 모두에서 동일한 변수를 사용하고 "GO"문을 사용하면 변수가 손실된다는 것입니다. 아래 예.

declare @MyVar int 
set @MyVar = 1 

-- Query with short execution time 
select * 
from MyTable t 
where t.Column = @MyVar 

GO -- @MyVar is lost 

-- Query with long execution time 
select * 
from MyOtherTable o 
where o.Column = @MyVar -- @MyVar no longer exists 
+3

나는이 문제를 한번도 경험하지 못했습니다. SSMS에서 생성 된 결과 세트를 봅니다. –

+1

아 맞습니다. 'select * from master..spt_values ​​waitfor delay '01 : 00 ''은 2474 개의 행을 반환하지만 버퍼에 아직 플러시되지 않는 32 개의 행이있는 것으로 보입니다. 'select top 1 * from master..spt_values ​​waitfor delay '01 : 00 ''은 즉시 어떤 행도 반환하지 않습니다. –

답변

7

당신은 버퍼가 플러시 원인이되는, raiseerror을 사용할 수 있습니다 : 당신은 쿼리 사이에이를 넣을 수 있습니다

RAISERROR('Just to print everything',0,1) WITH NOWAIT 

.

+0

빙고. 'select * from master..spt_values ​​RAISERROR ('모든 것을 인쇄하기', 0,1) NOWAIT waitfor delay '01 : 00 ''은 나를 위해 작동합니다. –

+0

위대한 작품. 감사! 추가 정보 : http://msdn.microsoft.com/en-us/library/ms178592.aspx –

3

대신 변수를 임시 테이블에 저장할 수 있습니다.

create table #MyTable (MyVar int) 
insert into #MyTable (MyVar) values (1) 

-- Query with short execution time 
select * 
from MyTable t 
where t.Column = (select MyVar from #MyTable) 

GO -- #MyTable is preserved 

-- Query with long execution time 
select * 
from MyOtherTable o 
where o.Column = (select MyVar from #MyTable) 
+0

이것은 현재 문제를 해결하는 방법입니다. 나는 더 나은 해결책을 찾고 있는데, 이것이 효과가있다. –