2011-12-13 11 views
11

Sto scrivendo uno script SQL per sql server 2008, dove ho posto una dichiarazione uso all'inizio che specifica il database lo script dovrebbe essere eseguito contro:specificare server script SQL

use [my_database] 

Come ho diversi ambienti dove esiste lo stesso database, per esempio dev, qa, prod, c'è un modo per specificare nello script l'ambiente per cui lo script è, sia per nome del server o indirizzo IP o con qualsiasi altro meccanismo.

+0

Hai mai trovato una risposta a questa domanda? La risposta di @Filip De Vos ha funzionato per te? –

risposta

1

Questa è un'impostazione CONNECTION, non un parametro all'interno dello script.

È possibile eseguire lo stesso script in diversi ambienti tramite file batch o uno script PowerShell se lo si desidera, oppure è possibile impostare i server collegati, ma non si può certo dire che

USE SomeOtherServer

ci sono la sicurezza e la implicazioni di rete pure.

0

Supponendo che eseguirai tutti questi script su un server particolare, ad es. il server Dev - quindi è sufficiente creare un server collegato a ciascuno degli altri server.

Quindi, per esempio, è possibile eseguire una stored procedure lo stesso nome su ciascuno di questi server nel seguente modo:

EXEC MyDatabase.dbo.mysp_DoSomething --Dev Server; no server prefix needed since that's where we are 
EXEC QA.MyDatabase.dbo.mysp_DoSomething --QA Server 
EXEC Prod.MyDatabase.dbo.mysp_DoSomething --Prod server 

ecc

21

si può mettere lo SQL Management Studio in SQLCMD mode e specificare il server con la dichiarazione :CONNECT myserver.

È possibile passare alla modalità comando facendo clic sull'opzione nella foto qui sotto enter image description here

Lo script sarebbe quindi simile a questo

:CONNECT devserver 
    use [my_database] 
    SELECT * FROM my_table 

Si possono anche fare i server degli interruttori finestra di query durante esecuzione

:CONNECT devserver 
    use [my_database] 
    SELECT * FROM my_table 
    GO 
    :CONNECT uatserver 
    use [my_database] 
    SELECT * FROM my_table 

Per connettersi con un utente e una password specifici, è possibile specificare quanto segue

:CONNECT devserver -U myUser -P myPassword 
    use [my_database] 
    SELECT * FROM my_table 

Ci sono in realtà una serie di opzioni che è possibile specificare che sono ben documented on msdn.

+0

Esiste un modo per farlo e specificare un nome utente e una password? Ricevo un errore di accesso non riuscito. –

+1

si può fare ': CONNECT devserver -U utente -P password'. Lo aggiungerò alla risposta una volta che i miei aggiornamenti smetteranno di sbagliare. –

Problemi correlati