2013-05-13 13 views
5

Ist es möglich, eine Verbindung zu einem anderen SQL Server mit einer SQL-Abfrage herzustellen (so dass man auch Abfragen auf diesem Server ausführen und die Ergebnismenge im aktuellen Server verwenden kann). Wenn nicht, warum?Verbindung zu einem anderen SQL Server über SQL Query?

+0

Die kurze Antwort darauf ist nein, und weil Sie nicht können. Kannst du ein bisschen mehr darüber erzählen, was du zu tun versuchst, vielleicht können die Leute dann nützlicher helfen. – Will

+0

@Will - Ich bin auf der Suche nach einer SQL-Abfrage, in der Sie die IP, den Benutzernamen, das Passwort usw. eines entfernten SQL-Servers eingeben und dann diese Datenbank auf Ihrem lokalen Computer abfragen können, ohne all diese Dinge in Management Studio eingeben zu müssen . –

+0

Nebenbei frage ich mich, ob Oracle, db2 und mysql etc. eine ähnliche Funktion haben. –

Antwort

1

Nur Microsoft SQL Server:

Ja, es ist möglich. Sie müssen einen verknüpften Microsoft SQL Server konfigurieren. Hier ist die Info: http://msdn.microsoft.com/en-us/library/ms188279.aspx

Nachdem Sie Ihre Server konfiguriert, Ihre Abfrage (auf server1) würde wie folgt aussehen:

SELECT TOP 10 * FROM server2.yourdatabase.yourschema.yourtable 
+0

Dies funktioniert in MSSQL. Ich bevorzuge 'openquery' oder den Namen des Verbindungsservers in EXEC-Anweisungen wie' EXEC ('Select * FROM ABC') AT LinkdedServerName'. Ich weiß nicht, ob die Syntax funktioniert, wenn Sie eine mssql-Datenbank mit einer MySQL-Datenbank über ODBC verwenden. –

+0

Ich habe das nur in MS SQL Server versucht. Ich werde meine Antwort aktualisieren. – Eugene

+0

Funktioniert diese Abfrage für den Zugriff auf Remote-Server? In Ihrer Antwort ist "Server2" die Verbindungszeichenfolge für den Server 2? –

4

Ja, können Sie erreichen, auf einen anderen SQL-Server verbinden, indem Sie eine verlinkte Server, oder Sie können durch Server abfragen, indem Sie Openquery:

SELECT * FROM openquery([aa-db-dev01], 'Select * from TestDB.dbo.users')

Querying a linked sql server

-1

Dies funktioniert in SQL 2012. Wird in einem grauen Feld angezeigt Muss vor dem SQL ausgeführt werden, um auf dem anderen Server ausgeführt zu werden, andernfalls wird der Code ausgeführt, auf welchem ​​Server/Datenbank das Abfragefenster verbunden ist. Lokale Variablen wie @@ Servername und SERVERPROPERTY geben die gleichen Ergebnisse zurück wie der verbundene Server. Was war verdammt unerwartet !!!

: Verbinden server

Beispiel laufen von SQLTEST

SELECT CONVERT(sysname, SERVERPROPERTY('servername')); 

:Connect CSQL2008 

SELECT CONVERT(sysname, SERVERPROPERTY('servername')); 

SELECT CONVERT(sysname, SERVERPROPERTY('servername')); 

Erzeugt:

CSQL2008 

CSQL2008 

CSQL2008 

Während

select distinct(server_name) from msdb.dbo.backupset 
go 

:Connect CSQL2012 

select distinct(server_name) from msdb.dbo.backupset ; 

go 

select distinct(server_name) from msdb.dbo.backupset ; 

produziert:

SQLTEST 

CSQL2012 

CSQL2012 
+0

@@ sind globale Variablen, weshalb sie sich je nach Server ändern würden verbunden mit. –