2012-12-04 3 views
0

다음 SQL 쿼리를 사용하여 데이터베이스에서 batchfile을 통해 버전 번호를 가져옵니다.SQL 쿼리 결과를 배치 파일의 로컬 변수에 저장하는 방법은 무엇입니까?

sqlcmd.exe -S localhost -d MyDB 
      -Q "set nocount on;Declare @VersionNumber nvarchar(128) set @VersionNumber = (select top 1 versionnumbe from Table_schemaversion order by Id desc) print 'Your Previous Version is: ' + @VersionNumber " 

이 쿼리는 올바르게 작동하며 올바른 결과를 산출합니다.

하지만이 결과를 배치 파일의 로컬 변수에 저장해야합니다. 그리고 여기에 외부 파일을 사용할 수 없으므로 위의 쿼리만으로이 작업을 수행해야합니다.

어떻게하면됩니까? 아무도 나 한테 해결책을 말해 줄 수 있니? 사전에

감사합니다 .....

+0

명령 줄을 통해 이것을 실행하고 있습니까? –

+0

예 명령 줄 – Rajesh

+0

으로 실행 중입니다. 배치 파일이 외부 파일에서 버전을 읽지 않는 이유는 무엇입니까? –

답변

1

명령의 결과가이 충분히있을 것이다 단 한 줄의 경우 :

FOR /F "usebackq" %%S IN (`sqlcmd.exe -S localhost -d MyDB -Q "set nocount on;Declare @VersionNumber nvarchar^(128^) set @VersionNumber = ^(select top 1 versionnumbe from Table_schemaversion order by Id desc^) print 'Your Previous Version is: ' + @VersionNumber "`) DO SET var=%%S 

또는

FOR /F %%S IN ('sqlcmd.exe -S localhost -d MyDB -Q "set nocount on;Declare @VersionNumber nvarchar^(128^) set @VersionNumber = ^(select top 1 versionnumbe from Table_schemaversion order by Id desc^) print ^'Your Previous Version is: ^' + @VersionNumber "') DO SET var=%%S 
+0

위의 두 명령을 모두 적용했지만 결과를 인쇄 할 수 없습니다. 그 출력을 변수에 저장해야합니다 : = myversion number와 같은, – Rajesh

+0

오류가 있습니까? 그 후에 var를 인쇄하려고 했습니까 ->'echo % var %' – npocmaka

+0

echo % var %, print 잘못된 – Rajesh

1

당신은을 작성해야합니다이 임시 파일에서 쿼리 결과를 읽은 다음 거기에서 읽습니다.

sqlcmd -S ".\SQLEXPRESS" -Q "select c1 from [a].[dbo].[t1] where c1='1'" -U sa -P wavetec -h -1 -o tempstorage.txt   
set /p varname=<tempstorage.txt 
echo %varname% 
  • -o :이 당신이 원하는 헤더를

희망을 생략! : 파일

  • -h -1을 만듭니다

  • 관련 문제