2009-02-13 6 views
7

Esiste un comando TSQL per connettersi a un altro server?Comando TSQL per la connessione a un altro server (SQL Server 2005)

Oppure quando ci si trova in una finestra di query, quali sono le scorciatoie da tastiera per connettersi a un altro server e visualizzare una finestra di query?

ho visto Ctrl + N sollevare il Connetti al server dialogo in alcune schermate, ma quando mi trovo in una finestra di query già e premere CTRL + N si apre semplicemente un'altra finestra di interrogazione.

Il comando USE consente di connettersi ad altri database sul server corrente ma esiste un comando che consente di connettersi a un altro server?

Sto usando SQL Server 2005.

+0

Si sta cercando di cambiare il server con cui si sta eseguendo la finestra di query corrente oppure la query corrente ottiene i dati da un server diverso, ma rimane connesso a quello corrente? – SqlRyan

risposta

5

È possibile utilizzare OpenDataSource con un server collegato

OpenDataSource(provider_name, init_string) 

Per esempio

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

Da MSDN -

Come la funzione OPENROWSET, OPENDATASOURCE deve fare riferimento solo OLE DB fonti di dati che a ri accesso a raramente. Definire un server collegato per tutte le origini dati a cui è possibile accedere più diverse volte. Né OPENDATASOURCE né OPENROWSET forniscono tutte le funzionalità delle definizioni del server collegato , ad esempio la sicurezza e la possibilità di interrogare le informazioni del catalogo . Tutte le informazioni di connessione , comprese le password, devono essere fornite ogni volta che viene chiamato OPENDATASOURCE.

1

si ha la scelta di creare un Linked Server e utilizzare con OPENQUERY o utilizzare OPENROWSET.

Se si sta parlando, cambiando la connessione a una finestra di query, è sufficiente fare clic con il pulsante destro del mouse nella finestra della query e selezionare modifica connessione.

1

Dopo aver installato un server collegato è possibile eseguire TSQL contro di essa qualificandosi completamente ogni tabella/vista

select * from [Server]. [Database]. [Proprietario] .table

In questo modo puoi parlare con qualsiasi server da qualsiasi finestra di query, se è ciò di cui hai bisogno. Nella maggior parte degli Sql fornisci sempre la tabella, dato che tutto il resto è predefinito. Usando questa tecnica puoi persino scrivere clausole di join tra i server, così come è in esecuzione il coordinatore della transazione distribuita (MSDTC). Ovviamente lo farai solo una volta per dimostrare che funziona, dato che scorre incredibilmente lentamente.

6

sia tramite menù ...

Query> Connessione> Cambia connessione

o tramite il mouse ...

(tasto destro del mouse Button)> Connessione> Cambia connessione

Entrambi si aprirà il Connetti al Motore di database finestra di dialogo

Se la vostra voglia di scrivere qualche TSQL tra server allora si' Avremo bisogno di creare un server collegato e quindi utilizzare OPENQUERY o OPENROWSET nel tuo SQL. Ci sono alcuni buoni suggerimenti nei post precedenti su come farlo.

4

Un altro paio di opzioni che possono essere valide a seconda di ciò che si desidera fare sono la modalità SQLCMD e i server registrati.

La modalità SQLCMD può essere abilitata nel menu query in SSMS. Una volta che è abilitato si può fare qualcosa di simile con esso:

:CONNECT SERVER1 
SELECT @@SERVERNAME; 
GO 

:CONNECT SERVER2 
SELECT @@SERVERNAME; 
GO 

Con Server registrati (dovrebbe essere sotto il menu View) è possibile configurare gruppi di server ed eseguire query contro i gruppi tutti in una volta.

Entrambi possono essere utili in molti scenari DBA, ma non sono sicuro che sia quello che stai cercando.

+0

Modificato per aggiungere terminatore di istruzioni e comando di esecuzione batch, altrimenti entrambi i comandi nell'esempio precedente vengono eseguiti sul secondo server. –