2009-06-10 2 views
0

Обычно я не работаю со связанными серверами, поэтому я не уверен, что я здесь делаю неправильно.T-SQL 2000: имя таблицы из четырех частей

Запрос, как это будет работать на связанный Foxpro сервер с SQL Server 2000:

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

Однако из исследования в Интернете, что-то, как это должно работать:

Select * from linkedserver...linkedtable 

но я получите эту ошибку:

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.]. 

Я понимаю, что это должно быть ServerAlia s.Category.Schema.TableName, но если я запустил sp_ tables _ex на связанном сервере, для категории для всех таблиц я просто получаю сетевой путь к тому, где находятся файлы данных, а схема - null.

Неправильно ли установлен этот сервер? Или это то, что я пытаюсь сделать невозможным?

ответ

1

От 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

Вы не можете полагаться на неявное разрешение имен схемы для обозначения «..» для связанных серверов. Для сервера FoxPro вам придется использовать базу данных и схему, поскольку они сопоставляются с их коллегами из FoxPro в используемом вами драйвере (I think они сопоставляются с папкой и именем файла, но я не использую ISAM-файл уже более 10 лет).

0

Я думаю, вы должны быть четко о ресурсах в связанном серверной части запроса, например:

EXEC SomeLinkedServer.Database.dbo.SomeStoredProc 

Другими словами просто расставить их не работает в этом случае, вы должны Более конкретно.

0

Это на самом деле:

ServerAlias.Catalog.Schema.LinkedTable

Каталог является база данных, вы запрашивая на связанном сервере, и каталог каталог удаленной таблицы. Таким образом, действительное имя из четырех частей будет выглядеть Лик этой

ServerAlias.AdventureWorks.HumanResources.Employee

или

ServerAlias.MyDB.dbo.MyTable

+0

Есть ли способ, который я могу определить, каковы эти две средние части? sp_linkedservers показывает «SRV_CAT» как null, а sp_tables_ex имеет значение «TABLE_SCHEM» как нуль – John

+0

. Посмотрите здесь - OP в этом потоке прошел аналогичную проблему с FoxPro: http://www.sqlnewsgroups.net/group/ microsoft.public.sqlserver.server/topic15865.aspx Позвольте мне, как это работает. –