2009-02-13 25 views
7

¿Hay un comando TSQL para conectarse a otro servidor?Comando TSQL para conectarse a otro servidor (SQL Server 2005)

O cuando se encuentra en una ventana de consulta, ¿cuáles son los accesos directos del teclado para conectarse a otro servidor y tener una ventana de consulta?

He visto Ctrl + N mostrar el cuadro de diálogo Connect to Server en algunas pantallas, pero cuando ya estoy en una ventana de consulta y presiono Ctrl + N solo abre otra ventana de consulta.

El comando USE le permite conectarse a otras bases de datos en el servidor actual, pero ¿hay algún comando que le permita conectarse a otro servidor?

estoy usando SQL Server 2005.

+0

¿Está buscando cambiar el servidor en el que se está ejecutando su ventana de consulta actual, o hacer que su consulta actual obtenga datos de un servidor diferente, pero permanezca conectado al servidor actual? – SqlRyan

Respuesta

5

Puede utilizar OpenDataSource con un servidor vinculado

OpenDataSource(provider_name, init_string) 

Por ejemplo

SELECT 
FirstName, 
Gender 
FROM 
OpenDataSource (
'SQLOLEDB', 
'DataSource = NOLI\SQL2;UserID=myUserID;Password=myPassword' 
).Organisation.dbo.Employees 

De MSDN -

Al igual que la función OPENROWSET, OPENDATASOURCE sólo debe hacer referencia a OLE DB fuentes de datos que re accesó con poca frecuencia. Defina un servidor vinculado para cualquier fuente de datos a la que se haya accedido más veces . Ni OPENDATASOURCE ni OPENROWSET proporcionan toda la funcionalidad de las definiciones de servidor vinculado , como la administración de seguridad y la capacidad de consultar información del catálogo. Se debe proporcionar toda la información de la conexión , incluidas las contraseñas, cada vez que se llame a OPENDATASOURCE.

1

usted tiene la opción de crear un Linked Server y utilizar con OPENQUERY o utilizar OPENROWSET.

Si está hablando de cambiar la conexión a una ventana de consulta, simplemente haga clic derecho en la ventana de consulta y seleccione cambiar conexión.

1

Una vez que ha configurado un servidor vinculado puede ejecutar TSQL contra por calificar plenamente cada tabla/vista

SELECT * FROM [Servidor]. [Base de datos]. [Propietario] .Tabla

De esta forma, puede hablar con cualquier servidor desde cualquier ventana de consulta, si eso es lo que necesita. En la mayoría de Sql, solo proporciona la tabla, ya que todo lo demás está predeterminado. Con esta técnica, incluso puede escribir cláusulas de unión entre servidores, tan bajo como el coordinador de transacciones distribuidas (MSDTC) se esté ejecutando. Por supuesto, solo lo harás una vez para demostrar que funciona, ya que funciona increíblemente lento.

6

O a través del menú ...

consulta> Conexión> Conexión Cambio

o mediante el ratón ...

(botón derecho del ratón botón)> Conexión> Cambiar conexión

Ambos se abrirá la cuadro de diálogo Conectar motor de base de

Si su deseo de escribir algo de TSQL entre servidores, entonces' Necesitaré crear un servidor vinculado y luego usar OPENQUERY u OPENROWSET en tu SQL. Hay algunos buenos consejos en las publicaciones anteriores sobre cómo hacer esto.

4

Otro par de opciones que pueden ser viables dependiendo de lo que quieras hacer son el modo SQLCMD y los Servidores Registrados.

El modo SQLCMD se puede habilitar en el menú de consulta en SSMS. Una vez que está activado, puede hacer algo como esto con ella:

:CONNECT SERVER1 
SELECT @@SERVERNAME; 
GO 

:CONNECT SERVER2 
SELECT @@SERVERNAME; 
GO 

con servidores registrados (debe estar en el menú Ver) puede configurar grupos de servidores y ejecutar consultas en los grupos a la vez.

Ambos pueden ser útiles en muchos escenarios de DBA, pero no estoy seguro de si eso es lo que buscas.

+0

Editado para agregar un terminador de sentencia y un comando de ejecución por lotes; de lo contrario, ambos comandos en mi ejemplo anterior se ejecutan contra el segundo servidor. –

Cuestiones relacionadas