2009-04-06 12 views
28

Angenommen, ich habe eine Datenbank mit dem Namen testdb in Test Server. Auch ich habe eine Datenbank mit dem Namen proddb in prod Server. Nun möchte ich Daten aus einer Tabelle testdb Datenbank von proddb Datenbank auswählen.Wie Daten einer Tabelle aus einer anderen Datenbank in SQL Server auswählen?

Wie kann ich das in SQL Server?

Auch ich kann es mit Datenbankverbindung in Orakel tun. Aber wie kann das in SQL Server tun?

Antwort

5

Um eine Cross-Server-Abfrage durchzuführen, überprüfen Sie die gespeicherte Systemprozedur: sp_addlinkedserver in den Hilfedateien.

Sobald der Server verbunden ist, können Sie eine Abfrage dagegen ausführen.

+0

Die Tabellen in anderen Server sind. – user82431

+0

Ja, schau das gerade an. Sie können es tun, indem Sie die Server verbinden ... –

+0

Wie kann ich zwischen Servern verbinden und wie kann ich Daten auswählen? Bitte geben Sie Schritte an. danke – user82431

44

Sie benötigen sp_addlinkedserver()

http://msdn.microsoft.com/en-us/library/ms190479.aspx

Beispiel:

exec sp_addlinkedserver @server = 'test' 

dann

select * from [server].[database].[schema].[table] 

In Ihrem Beispiel:

select * from [test].[testdb].[dbo].[table] 
+2

Wenn Sie verschiedene Anmeldeinformationen übergeben müssen, verwenden Sie EXEC sp_addlinkedsrvlogin 'Servername', 'falsch', NULL, 'SqlUser', 'Passwort' –

+0

Ich kämpfte um dies zu arbeiten, fand, dass Sie dies auch mithilfe von SSMS (https://www.sqlshack.com/how-to-create-and-configure-a-linked-server-in-sql-server-management-studio/), die dann zeigt Ihnen alle verschiedenen Sicherheits-Optionen, die verfügbar sind - Ich musste feststellen, dass ich es so einrichten musste, dass es den aktuellen Login-Sicherheitskontext verwendet, um es zum Laufen zu bringen. –

11

ich das habe, bevor eine Abfrage für einen anderen Server und db über verknüpfte Server-Setup verwendet:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='', 
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer' 

pro den Kommentar oben:

select * from [server].[database].[schema].[table] 

z.B.

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus] 
5

In SQL Server 2012 und höher müssen Sie keine Verknüpfung erstellen. Sie können

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET 

Ich weiß nicht direkt ausführen, ob frühere Versionen von SQL Server Arbeit als auch

Verwandte Themen