2013-07-21 104 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方法完美的作品。