Використання 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-профілера на скрипті sql зі змінними sqlcmd, і ви побачите, що вони вже були оцінені.
—
Тім Абелл