SQL Server 2008 R2 Enterprise Edition 사용
다음 진술을 고려하십시오.
:setvar source_server_name "SERVERNAME\INSTANCENAME"
SQLCMD 모드에서 TSQL을 사용하여 해당 값을 얻을 수 있습니까?
다음과 같은 것 : :setvar source_server_name = SELECT @@servername
감사합니다
2013 년 7 월 15 일 업데이트
아래에 제공된 두 가지 답변으로 원하는 결과를 얻지 못했기 때문에 더 관련성 높은 시험을 추가하고 있습니다.
:setvar source_server_name [myserver]
source_server_name 변수가 텍스트 문자열 [myserver_1]로 설정되었습니다.
이 작업을 수행하고 싶습니다.
create table #tmp(
id int identity(1,1),
server sysname
)
insert into #tmp values('myserver_1'),('myserver_2');
:setvar source_server_name = SELECT server FROM #tmp WHERE id = 1
select '$(source_server_name)'
(No column name)
myserver_1
source_server_name 변수는 id 1에 대한 서버의 값으로 설정됩니다.
내가 알고 있거나 알아낼 수는 없습니다.
sqlcmd 변수는 sql이 서버로 전송되기 전에 클라이언트에서 평가되기 때문에 요청하는 것은 가능하지 않습니다. 따라서 SQL 서버가 절대 보지 않는 변수의 값을 설정하도록 요청하고 있습니다. sqlcmd 변수를 사용하여 SQL 스크립트에서 SQL 프로파일 러 추적을 실행하면 모두 이미 평가 된 것을 볼 수 있습니다.
—
Tim Abell