2009-06-10 11 views
0

Ich arbeite normalerweise nicht mit verbundenen Servern, und deshalb bin ich mir nicht sicher, was ich hier falsch mache.T-SQL 2000: Vierteiliger Tabellenname

Eine Abfrage wie diese wird von SQL 2000 zu einem verknüpften foxpro Server arbeiten:

EXEC('Select * from openquery(linkedServer, ''select * from linkedTable'')') 

jedoch im Internet von der Erforschung, so etwas wie dies sollte auch funktionieren:

Select * from linkedserver...linkedtable 

aber ich Fehlermeldung:

Server: Msg 7313, Level 16, State 1, Line 1 
Invalid schema or catalog specified for provider 'MSDASQL'. 
OLE DB error trace [Non-interface error: Invalid schema or catalog specified for the provider.]. 

Ich weiß, dass es ServerAlia sein soll s.Category.Schema.TableName, aber wenn ich sp_tables _ex auf dem Verbindungsserver ausführe, erhalte ich für die Kategorie für alle Tabellen nur den Netzwerkpfad, wo sich die Datendateien befinden, und das Schema ist null.

Ist das Server-Setup falsch? Oder ist das was ich versuche nicht möglich?

Antwort

1

Von MSDN:

Always use fully qualified names when working with objects on linked servers. There is no support for implicit resolution to the dbo owner name for tables in linked servers

Sie können sich nicht auf die implizite Schemanamensauflösung in der Notation '..' für verbundene Server verlassen. Für einen FoxPro - 'Server' müssen Sie die Datenbank und das Schema verwenden, während sie ihren FoxPro - Gegenstücken in dem von Ihnen verwendeten Treiber zugeordnet werden (I think sie ordnen Ordner und Dateiname zu, aber ich habe kein ISAM-Dateitreiber seit mehr als 10 Jahren).

0

Ich glaube, Sie brauchen, um über Ressourcen in dem verknüpften Server-Teil der Abfrage explizit zu sein, zum Beispiel:

EXEC SomeLinkedServer.Database.dbo.SomeStoredProc 

Mit anderen Worten Punktierung sich gerade aus in diesem Fall nicht funktioniert, müssen Sie sei genauer.

0

Es ist eigentlich:

ServerAlias.Catalog.Schema.LinkedTable

Katalog ist die Datenbank, die Sie auf dem Verbindungsserver sind Abfragen und Katalog ist der Katalog der entfernten Tabelle. So ein gültiger vierteiligen Namen aussehen würde lik dieses

ServerAlias.AdventureWorks.HumanResources.Employee

oder

ServerAlias.MyDB.dbo.MyTable

+0

Gibt es eine Möglichkeit zu bestimmen, was diese beiden Mittelstücke sind? sp_linkedservers zeigt 'SRV_CAT' als NULL, und sp_tables_ex hat 'TABLE_SCHEM' ebenso als Null – John

+0

Schauen Sie hier - das OP in diesem Thread hat ein ähnliches Problem mit FoxPro: http://www.sqlnewsgroups.net/group/ microsoft.public.sqlserver.server/topic15865.aspx Lass mich wie es funktioniert. –