2009-02-13 7 views
7

Czy istnieje polecenie TSQL umożliwiające połączenie z innym serwerem?Polecenie TSQL do łączenia się z innym serwerem (SQL Server 2005)

A jeśli jesteś w oknie zapytania, jakie są skróty klawiszowe, aby połączyć się z innym serwerem i wyświetlić okno zapytania?

Widziałem Ctrl + N pojawia się okno dialogowe Połącz się z serwerem na niektórych ekranach, ale kiedy jestem już w oknie zapytania i naciśnij Ctrl + N, to po prostu otwiera kolejne okno zapytania.

Komenda USE umożliwia połączenie z innymi bazami danych na bieżącym serwerze, ale czy istnieje polecenie umożliwiające połączenie z innym serwerem?

Używam SQL Server 2005.

+0

Czy chcesz zmienić serwer, na którym działa bieżące okno zapytań, lub czy Twoje bieżące zapytanie pobiera dane z innego serwera, ale pozostaje połączone z bieżącym? – SqlRyan

Odpowiedz

5

Można użyć OpenDataSource z serwera połączonego

OpenDataSource(provider_name, init_string) 

Na przykład

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

Od MSDN -

jak funkcja OPENROWSET, OPENDATASOURCE powinien jedynie odwoływać OLE DB źródła danych, które ponownie dostęp do nieczęsto. Zdefiniuj połączony serwer dla dowolnych źródeł danych, do których uzyskano więcej dostępu niż niż kilka razy. Ani OPENDATASOURCE ani OPENROWSET nie zapewniają pełnej funkcjonalności definicji połączonych serwerów , takich jak zarządzanie zabezpieczeniami i możliwość wyszukiwania informacji katalogowych . Wszystkie połączenia informacje, w tym hasła, muszą być dostarczane za każdym razem, gdy wywoływana jest funkcja OPENDATASOURCE .

1

Masz Wybór tworzenia i korzystania z Linked ServerOPENQUERY lub użyj OPENROWSET.

Jeśli mówisz o zmianie połączenia z oknem zapytania, po prostu kliknij prawym przyciskiem myszy w oknie zapytania i wybierz zmień połączenie.

1

Po skonfigurowaniu serwer połączony można uruchomić TSQL przeciwko niemu przez całkowicie kwalifikacjach każdej tabeli/widoku

select * from [Server]. [Database]. [Właściciel] .table

W ten sposób możesz rozmawiać z dowolnym serwerem z dowolnego okna zapytania - jeśli tego potrzebujesz. W większości Sql podasz tylko stół, ponieważ wszystko inne jest domyślne. Za pomocą tej techniki można nawet pisać klauzule dołączenia między serwerami, tak niskie, jak działa koordynator transakcji rozproszonych (MSDTC). Oczywiście zrobisz to tylko raz, żeby to udowodnić, ponieważ działa niesamowicie wolno.

6

za pośrednictwem menu ...

Query> Połączenie> Change Connection

lub za pomocą myszki ...

(Kliknij prawym przyciskiem myszy przycisk myszy)> Połączenie> Change Connection

Zarówno pojawi się na Połącz Database Engine oknie dialogowym

Jeśli Twój chcąc napisać TSQL między serwerami wtedy” Będę musiał utworzyć połączony serwer, a następnie użyć OPENQUERY lub OPENROWSET w twoim SQL. W poprzednich postach jest kilka dobrych wskazówek, jak to zrobić.

4

Kolejne kilka opcji, które mogą być wykonalne w zależności od tego, co chcesz zrobić, to tryb SQLCMD i zarejestrowane serwery.

Tryb SQLCMD można włączyć w menu zapytań w systemie SSMS. Po jej włączeniu można zrobić coś takiego z nim:

:CONNECT SERVER1 
SELECT @@SERVERNAME; 
GO 

:CONNECT SERVER2 
SELECT @@SERVERNAME; 
GO 

z oo z serwerami (powinno być w menu Widok), można tworzyć grupy serwerów i wykonywania zapytań wobec grup naraz.

Obie mogą być przydatne w wielu scenariuszach DBA, ale nie jestem pewien, czy tego właśnie szukasz.

+0

Edytowane w celu dodania polecenia zakończenia terminala i polecenia wsadowego, w przeciwnym razie oba polecenia w moim poprzednim przykładzie zostaną wykonane na drugim serwerze. –