2016-11-28 119 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 Servers下的SQL Server Management Studio幫助下檢查表是否列在鏈接服務器上。

編輯: 請檢查this網站,如果你已經實現了這個網站指出完全的所有步驟。

而且也應該已經錯過了一個共同點如下:

添加", @[email protected]"sp_addlinkedserver聲明。

+0

是所有工作,但是當我使用參數拋出錯誤 – 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它是爲你工作。 ? –