Impostazione delle variabili in modalità SQLCMD


13

Utilizzo di SQL Server 2008 R2 Enterprise Edition

Considera la seguente dichiarazione:

:setvar source_server_name "SERVERNAME\INSTANCENAME"

È possibile in modalità SQLCMD ottenere quel valore usando TSQL

Qualcosa di simile a: :setvar source_server_name = SELECT @@servername

Grazie

Aggiornamento del 15/07/2013

Le due risposte offerte di seguito non hanno dato il risultato desiderato, quindi sto aggiungendo un esempio più rilevante.

:setvar source_server_name [myserver]

La variabile source_server_name è impostata sulla stringa di testo [myserver_1]

Mi piacerebbe essere in grado di fare questo:

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 variabile source_server_name verrebbe impostata sul valore nel server per id 1.


Non che ne sia a conoscenza o che possa capire.

1
Ciò che chiedi non è di per sé possibile, perché le variabili sqlcmd vengono valutate dal client prima che sql venga mai inviato al server. Quindi stai chiedendo al server sql di impostare il valore di una variabile che non vede mai. Esegui una traccia del profiler sql su uno script sql con variabili sqlcmd e vedrai che sono già stati tutti valutati.
Tim Abell,

Risposte:


9

Penso che devi esportare i risultati in un file e riportarli indietro. Qualcosa del genere dovrebbe aiutarti ad avvicinarti a ciò che stai cercando:

:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)

Puoi vedere altri esempi qui .


Grazie. Ho già lasciato il lavoro, quindi proverò il tuo suggerimento lunedì
Craig Efrein,

Ho aggiornato la mia domanda
Craig Efrein,

Questa risposta si è rivelata la più utile.
Craig Efrein,

1
Immagino che la parte importante qui sia che devi avere lotti separati per 1) generare il file SETVAR, 2) eseguirlo per inizializzare la variabile di script e, infine, 3) usare la variabile di script.
Andriy M,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.