2013-07-21 54 views
0

我想通過鏈接服務器安裝程序從SQL Server 2008 R2更新PervasiveSQL後端(Sage ERP系統)中的數據。下面是詳細信息和錯誤消息返回...踢球者是,更新語句在開發框中工作很好,非常類似的設置。任何幫助將不勝感激!SQL鏈接服務器更新Openquery語法錯誤

環境:

  • Windows Server 2008企業(雲服務器,Rackspace公司)
  • 的Microsoft SQL Server 2008 R2(SP1) - 10.50.2500.0(英特爾X86)Express Edition與高級服務在Windows NT 6.1 (建設7601:Service Pack 1的)(WOW64)(管理程序)
  • 賢者林線ERP與普適SQL第10節後端運行

設置:
我們在SQL Server 2008中使用32位Timberline驅動程序(OBDC)設置LINKED SERVER 鏈接服務器正在使用MSDASQL提供程序,並將以下兩個屬性設置爲TRUE「允許進程」和「非事務更新」

問題:
我們可以從鏈接的服務器成功提取數據,請參閱下面的查詢。我們可以通過SSMS中的鏈接服務器成功瀏覽對象。

SELECT * 
FROM OPENQUERY (TLLINKSERVER, 'SELECT * FROM TABLE1 where JOBID = ''00-00-111111''') 

但是低於UPDATE語句返回下面的錯誤。

UPDATE OPENQUERY(TLLINKSERVER, 'SELECT * FROM TABLE1 WHERE JOBID = ''00-00-111111''') 
SET DATEFIELD = '2013-07-15' 

錯誤:

OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" returned message "[Sage Timberline Office][Sage Timberline Office ODBC Driver]Syntax Error.". OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" returned message "[Sage Timberline Office][Sage Timberline Office ODBC Driver]UPDATE "\SERVER1\Company Data\DATA\COMPANY1\"<< ??? >>."TABLE1" SET "DATEFIELD1"=? WHERE "JOBID"=? AND "DATEFIELD1"=?".
Msg 7343, Level 16, State 4, Line 1
The OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" could not UPDATE table "[MSDASQL]".

+0

「非常相似」的設置 - 你可以列舉他們是不是完全相同? –

回答

1

爲什麼不能讓事情變得更容易? PervasiveSQL不支持通過鏈接服務器進行直接更新嗎?

UPDATE TLLINKSERVER...TABLE1 
    SET DATEFIELD = '2013-07-15' 
    WHERE JOBID = '00-00-111111'; 

或許:

SELECT * FROM OPENQUERY(TLLINKSERVER, 'UPDATE TABLE1 
    SET DATEFIELD = ''2013-07-15'' 
    WHERE JOBID = ''00-00-111111''); 

當你使用UPDATE OPENQUERY語法支持SQL Server鏈接的服務器,我不知道這是對其他平臺真正如PervasiveSQL ...

1

這就是我從SSMS更新表罪Oracle的方法。

在這種情況下,鏈接的服務器名稱是MyLinkedServer

我更新列CONTACT_EMAIL[email protected]其中STATE是以下(KY,OH,NY,PA,VA,DC)之一:

UPDATE L 
SET L.CONTACT_EMAIL ='[email protected]' 
FROM OPENQUERY(MyLinkedServer, 'SELECT * from MyTable')L 
WHERE L.STATE IN('KY','OH', 'NY','PA','VA','DC') 

OPENQUERY方法完美的作品。