2016-11-28 5 views
2
select @dbName="DBNAME" 

select Distributorid from [180.552.528.854,21414].[@dbName].DBO.DistributorMaster where Distributorid =XXXXXX 

ERROR: The OLE DB provider "SQLNCLI10" for linked server[180.552.528.854,21414] does not contain the table ""@dbName"."DBO"."DistributorMaster"". The table either does not exist or the current user does not have permissions on that table.Добавить параметр в SQL Server, связанного соединения

+0

'объявить @dbName VARCHAR (50) = 'DBNAME';' Объявляет только локальной переменной – Viki888

+1

Динамический SQL. –

+0

уже объявили – SANJOG

ответ

-1

При запросе связанного сервера, необходимо указать полное имя таблицы в следующей схеме:

SERVER.DATABASE.SCHEMA.OBJECT 

В дополнение к этому, проверьте, указана ли таблица на Linked Server с помощью SQL Server Management Studio под номером Linked Servers.

EDIT: Пожалуйста, проверьте this сайт, если вы выполнили все шаги, упомянутые на этом сайте полностью.

А также общая точка, которая должна уже была упущена следующая:

Добавление ", @[email protected]" к вашему sp_addlinkedserver заявление.

+0

да все работает, но когда я использую параметр его ошибки throw – SANJOG

+0

, я проверил его с жестко закодированным значением, он работает – SANJOG

4

Попробуйте это. Запрос значения динамической переменной.

  declare 
      @dbname nvarchar(max) ='dbName', 


      @query nvarchar(max) ='select Distributorid from [180.552.528.854,21414].[@dbName].DBO.DistributorMaster 
      where Distributorid =XXXXXX' 

      SET @Query=REPLACE(@Query,'@dbname',@dbname) 

      --print(@Query) 

      execute SP_executesql @Query 
+0

@SANJOG работает для вас. ? –

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