Использование SQL Server 2008 R2 Enterprise Edition
Рассмотрим следующее утверждение:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
Можно ли в режиме SQLCMD получить это значение с помощью TSQL
Что-то вроде: :setvar source_server_name = SELECT @@servername
Спасибо
Обновление 15.07.2013
Два приведенных ниже ответа не совсем дали желаемый результат, поэтому я добавляю более актуальный экзамен.
: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 будет установлена в значение на сервере для идентификатора 1.
Не то, чтобы я знал или мог выяснить.
То, что вы просите, само по себе невозможно, потому что переменные sqlcmd оцениваются клиентом еще до того, как sql будет отправлен на сервер. Таким образом, вы запрашиваете на сервере sql значение переменной, которую он никогда не видит. Запустите трассировку sql profiler для сценария sql с переменными sqlcmd, и вы увидите, что все они уже оценены.
—
Тим Абелл