2010-07-19 21 views
7

Jeśli chcę uruchomić tego rodzaju zapytanie w SQL Server, w jaki sposób mogę wykonać to samo zapytanie z jednego serwera, z którym jestem połączony, do innego?Wstawianie danych z jednego serwera do drugiego?

Próbowałem dodać "[NazwaSerwera1]." przed "[nazwa_bazy_danych1]. [dbo] ..." i "[nazwa_serwera2]." przed "[nazwa_bazy_danych2]. [dbo] ..." ale to nie działa.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
      ([FieldName]) 
    SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName] 

Czy to możliwe?

Odpowiedz

9

Tak należy użyć nazwy serwera-przed całą resztą obiektu nazwa-podobnego:

myserver.mydatabase.dbo.mytable 

Jednak najpierw trzeba skonfigurować połączonych serwerów. Wyszukaj połączone serwery w BOL.

+0

Co to jest "BOL"? –

+1

Books Online - pliki pomocy programu SQL Server. – HLGEM

8

Jeśli masz włączone adhoc distributed queries, możesz użyć OPENDATASOURCE. Konfigurowanie połączonego serwera to kolejna opcja. Nie jestem pewien plusów i minusów każdego podejścia.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
SELECT FieldName 
FROM OPENDATASOURCE('SQLNCLI', 
    'Data Source=Server\InstanceName;Integrated Security=SSPI') 
    .DatabaseName2.dbo.TableName 
+0

FYI tę funkcję należy włączyć: http://stackoverflow.com/questions/14544221/how-to-enable-ad-hoc-distributed-queries – VoteCoffee

2

Najlepszym sposobem na zrobienie tego jest utworzenie "połączonego serwera" pomiędzy tymi dwoma. Będziesz potrzebował odpowiednich uprawnień, aby to zrobić.

To tylko kwestia uzyskania dostępu do baz danych przy użyciu nazwy połączonego serwera.

Ex: [LinkedServer] .databasename.dbo.tablename

Aby utworzyć LinkedServer, przejdź do serwera objects-> kliknij prawym przyciskiem myszy połączony servers-> kliknij na 'nowego serwera połączonego'.

Powiązane problemy