2011-12-13 8 views
11

estoy escribiendo una secuencia de comandos SQL para SQL Server 2008, donde coloco un comunicado el uso al principio que especifica la base de datos de la secuencia de comandos se debe ejecutar en contra:especificar el servidor de secuencia de comandos SQL

use [my_database] 

Como tengo diferentes entornos donde existe la misma base de datos, por ejemplo, dev, qa, prod, ¿hay alguna forma en que pueda especificar en el script el entorno para el que está el script, ya sea por nombre de servidor o dirección IP o por cualquier otro mecanismo?

+0

¿Alguna vez encontró una respuesta para esta pregunta? ¿La respuesta de @Filip De Vos fue útil para usted? –

Respuesta

1

Esa es una configuración CONEXIÓN, no es un parámetro dentro de la secuencia de comandos.

Puede ejecutar el mismo guión en diferentes entornos a través de archivo por lotes o secuencia de comandos PowerShell, si lo desea, o puede configurar los servidores vinculados, pero no se puede decir simplemente

USE SomeOtherServer

Hay seguridad y implicaciones de redes también.

0

Suponiendo que ejecutará todos estos scripts en un servidor en particular, p. el servidor Dev - entonces simplemente necesita crear un servidor vinculado a cada uno de los otros servidores.

Entonces, por ejemplo, podría ejecutar un procedimiento almacenado con el mismo nombre en cada uno de estos servidores de esta manera:

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 

etc.

21

usted puede poner el SQL Management Studio en SQLCMD mode y especificar el servidor con la declaración :CONNECT myserver.

Se puede cambiar el modo de comando haciendo clic en la opción en la foto de abajo enter image description here

La secuencia de comandos sería entonces algo como esto

:CONNECT devserver 
    use [my_database] 
    SELECT * FROM my_table 

Puede incluso hacer que los servidores de conmutación ventana de consulta durante ejecución

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

Para conectarse con un usuario y contraseña específicos, puede especificar esto de la siguiente manera

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

realidad, hay una serie de opciones que se pueden especificar cuales son bien documented on msdn.

+0

¿Hay alguna manera de hacer esto y especificar un nombre de usuario y contraseña? Recibo un error de inicio de sesión fallido. –

+1

puede hacer ': CONNECT devserver -U usuario -P contraseña'. Lo agregaré a la respuesta una vez que mis actualizaciones dejen de error. –

Cuestiones relacionadas