web-dev-qa-db-fra.com

Définition de variables en mode SQLCMD

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.

13
Craig Efrein

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 .

9
SQLRockstar