2015-09-01 2 views
0

я создал связанный сервер через локальную сеть,Как получить доступ к Linked Server таблица в SQL сервере

Linked server Name-[DELL-PC] 

Здесь, я не в состоянии выполнить этот запрос для выбора значений из связанного сервера

case :1 
    select *From [DELL-PC].[BTS_Server].[dbo].Assy_ProductionOrder_ParameterSetting 
    select *From [DELL-PC].[BTS_Server]..Assy_ProductionOrder_ParameterSetting 

он говорит:

"Неверное имя объекта 'BTS_Server.dbo.Assy_ProductionOrder_ParameterSetting'."

, но если я использую openquery, она работает плавно

case :2 
    select * 
    From openquery([DELL-PC], 
    'Select *From [BTS_Server].[dbo].Assy_ProductionOrder_ParameterSetting '); 

Как получить доступ к связанному серверу таблицы, как заявления случае 1, любезно помочь мне.

ответ

1

Проверьте, содержит ли ваша таблица XML column, если да, этот синтаксис не будет работать.

SELECT * FROM [server].[database].[scheme].[table] 

Возможные обходные пути:

  1. Создать вид без столбца XML (ов) на удаленном сервере и запрос, который.

  2. Используйте сквозной запрос в виде SELECT * from OPENQUERY (...)

Другой возможный ответ:

Архитектура несоответствие 32/64-бит, когда неприемлемое OLE DB Provider используется:

32-разрядные машины могут запрашивать связанный сервер без использования OPENQUERY. Это 64-бит, который должен использовать OPENQUERY

+0

Нет, у меня нет колонки xml в этой таблице, также я создал фиктивную таблицу с одним столбцом nvarchar, она говорит то же самое. –

+0

В этом случае он не показывает имя связанного сервера в префиксе имени объекта. –

+0

@King_Fisher Возможно, у вас нет прав доступа. Посмотрите, что установлено на вкладке «Связанный сервер - безопасность» и какое разрешение имеет этот пользователь в удаленной базе данных. – lad2025

0

Как ниже

выберите * из LinkServername.Databasename.dbo.TableName

Но убедитесь, что у вас есть действительный имя пользователя и пароль для доступа к серверу ссылку , Это делается при создании ссылки.

Смежные вопросы