Frage

Ich habe eine Webtrends ODBC-Quelle auf server1 und SQL Server 2005 auf server2. Ich möchte auf diese ODBC von SQL Server auf server2 verbinden. Bisher konnte ich auf diese ODBC von SQL Server verbinden, die auf demselben Server ist, für den Verbindungsserver folgende Definition verwenden:

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

Ich kann diesen verknüpften Server wie folgt abfragen:

SELECT *
FROM OPENQUERY(WT_ODBC, 'SELECT * FROM CompleteViewV85.DownloadedFiles'); 

BTW, kann ich es nicht mit vierteiligen Namen wie diese Abfrage:

SELECT *
FROM WT_ODBC.[Complete View V8.5].CompleteViewV85.DownloadedFiles

Ich erhalte den folgenden Fehler:

Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server   
"WT_ODBC". A four-part name was supplied, but the provider does not expose the  
necessary   interfaces to use a catalog or schema.

.. und ich festgestellt, dass Option „Ebene Null nur“ nicht aktiviert ist. Aber das ist nicht so problematisch, da die erste Abfrage funktioniert.

Mein Problem ist - wie dieser ODBC zu verbinden, aber von einem anderen Server? Ich ging auf server2, und es in SQL Server Ich habe den folgenden verknüpften Server erstellt:

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@srvproduct=N'Microsoft OLE DB Provider for ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test',
@location=N'10.254.251.20'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

.. wo ich die IP-Adresse von server1 als @location Parameter gesetzt. Verbindungsserver, der auf diese Weise erstellt wird, kann nicht auf ODBC auf server1 verbinden. Wenn ich versuche, die gleiche Abfrage auszuführen, die auf server1 funktioniert, ich die folgende Fehlermeldung erhalten:

Cannot get the column information from OLE DB provider "MSDASQL" for linked server  
"WT_ODBC".

Hilfe? Jemand? Bitte? :)

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Ist es aus ODBC-Quellen in Fenstern arbeiten, wenn Sie Verbindung testen? In Administrative Tools\Data Sources (ODBC)

BTW, ist OPENQUERY eine gute Möglichkeit, Daten verwinden von „ungewöhnlich“ (für den Mangel an besserem Wort) Quellen, da die Abfrage-Passthrough ist. Der Abfragebefehl wird auf den Remote-Server geschickt, ausgeführt dort und nur Ergebnisse zurückgegeben zurück.

Wenn Sie nicht öffnen Abfrage nicht verwenden, hängt es von Optimierer. Wenn Remote-Server SQL Server, DB2, Oracle, wird der Optimierer es herausfinden. Wenn es etwas ungewöhnlich ist, kann sie entscheiden, Daten zu bewegen alle Tische zu starten und dann Spalte beginnen und Filterung auf dem lokalen Rechner rudert -. Art und Weise langsamer

Andere Tipps

würde ich sagen, dass nicht @location Parameter verwenden, sondern stattdessen Ihre WT_ODBC_test ODBC-Datenquelle richtig konfigurieren. Sie müssen es auf server2 natürlich konfigurieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top