Uso de SQL Server 2008 R2 Enterprise Edition
Considere la siguiente declaración:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
¿Es posible en modo SQLCMD obtener ese valor usando TSQL
Algo como: :setvar source_server_name = SELECT @@servername
Gracias
Actualización 15/7/2013
Las dos respuestas que se ofrecen a continuación no dieron el resultado deseado, así que estoy agregando un examen más relevante.
:setvar source_server_name [myserver]
La variable source_server_name se establece en la cadena de texto [myserver_1]
Me gustaría poder hacer esto:
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
La variable source_server_name se establecería en el valor en el servidor para id 1.
No es que yo sepa, o pueda resolverlo.
Lo que solicita no es posible per se, porque el cliente evalúa las variables sqlcmd antes de que el sql se envíe al servidor. Entonces está pidiendo que el servidor SQL establezca el valor de una variable que nunca ve. Ejecute un rastreo de perfilador sql en un script sql con variables sqlcmd y verá que ya se han evaluado.
—
Tim Abell