preferisco la risposta this da questa domanda Global Variables with GO
che ha il vantaggio di essere in grado di fare quello che in origine voleva fare pure.
L'avvertenza è che è necessario attivare la modalità SQLCMD (in Query-> SQLCMD) o attivarla per impostazione predefinita per tutte le finestre di query (Strumenti-> Opzioni, quindi Risultati query-> Per impostazione predefinita, aprire nuove query in SQLCMD modalità)
Quindi è possibile utilizzare il seguente tipo di codice (completamente strappato via da quella stessa risposta da Oscar E. Fraxedas Tormo)
--Declare the variable
:setvar MYDATABASE master
--Use the variable
USE $(MYDATABASE);
SELECT * FROM [dbo].[refresh_indexes]
GO
--Use again after a GO
SELECT * from $(MYDATABASE).[dbo].[refresh_indexes];
GO
fonte
2015-06-18 06:39:31
Perché voi è necessario qualificare il nome della tabella con il nome del DB?Immagino che una domanda simile sia stata posta prima di questa. – shahkalpesh
E non c'è modo di qualificare i nomi delle tabelle con il nome del database in una variabile del genere. Con la sua precedente domanda sull'utilizzo di una variabile con la dichiarazione USE, immagino che avrà bisogno di fare tutto in SQL dinamico, con tutto il dolore che trascina sul tavolo. –
Lo script effettivo integra 4 diversi database. Ho commentato le istruzioni per trovare e sostituire dbName1, dbName2, dbName3 e dbName4. Ho solo pensato che sarebbe stato meno incline all'errore per il client di impostare solo quattro variabili. – NitroxDM