Utilisation de SQL Server 2008 R2 Enterprise Edition
Considérez l'énoncé suivant:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
Est-il possible en mode SQLCMD d'obtenir cette valeur en utilisant TSQL
Quelque chose comme: :setvar source_server_name = SELECT @@servername
Je vous remercie
Mise à jour 15/07/201
Les deux réponses proposées ci-dessous n'ont pas tout à fait donné le résultat souhaité, j'ajoute donc un exemple plus pertinent.
:setvar source_server_name [myserver]
La variable nom_serveur_source est définie sur la chaîne de texte [myserver_1]
J'aimerais pouvoir faire ça:
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 nom_serveur_source serait définie sur la valeur du serveur pour l'ID 1.
Je pense que vous devez sortir vos résultats dans un fichier et les réintégrer. Quelque chose comme ça devrait vous aider à vous rapprocher de ce que vous recherchez:
:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)
Vous pouvez voir plus d'exemples ici .