2016-12-28 170 views
0

我有兩個SQL Server實例:訪問鏈接服務器直接

  • SQLSERVER64
  • SQLSERVER32

SQLSERVER32,我有一個鏈接的服務器稱爲ParadoxDBLinkedServer一個悖論數據庫。

要獲得某些Paradox表的我只是執行下面的語句服務器:

SELECT * 
FROM [ParadoxDBLinkedServer]...Clients 

然後,我需要從SQLSERVER64實例訪問這些對象。爲此,我在本例中創建了一個名爲[.\SQLSERVER32]的鏈接服務器,指向SQLSERVER32

我試圖現在要做的就是直接從SQLSERVER64實例訪問ParadoxDBLinkedServer對象。我的意思是,從另一臺鏈接服務器訪問鏈接的服務器。

查詢我正嘗試運行的是以下之一:

SELECT * 
FROM [.\SQLSERVER32].[ParadoxDBLinkedServer ]...Clients 

但我得到這個錯誤:

The number name '.\SQLSERVER32.ParadoxDBLinkedServer ...Clients' contains more than the maximum number of prefixes. The maximum is 3.

有什麼辦法來執行這樣的訪問?我在這裏錯過了什麼?

我試圖避免在SQLSERVER32實例中爲ParadoxDBLinkedServer的每個表創建視圖以減少開銷。

+0

你當你在你的四個部分命名約定多餘的對象得到這個錯誤:[。\ SQLSERVER32]。'[ParadoxDBLinkedServer] [SCHEMA_NAME ]。[Table_Name]'試試這個.. –

+0

@Darshan_Viswanath_BI,模式丟失。實際上它是在默認模式下。但嘗試[。\ SQLSERVER32]。[ParadoxDBLinkedServer]。[默認值]。我得到的客戶端:鏈接服務器「%ls」的OLE DB提供程序「%ls」不包含表「%ls」。該表或者不存在,或者當前用戶對該表沒有權限。 – Andres

+0

你可以登錄到兩臺服務器,並從[數據庫]中執行select *。[dbo]。[Client]'?使用[ParadoxDBLinkedServer]前綴應該是您的解決方案。如果表格不存在或者您沒有必要的權限,您將會知道它。 –

回答

0

SELECT * FROM OPENQUERY(Linkedservername, 'SELECT * FROM表名')