无法在链接服务器 OLE DB 提供程序 "MSDASQL" 上更新 table

Could not UPDATE table on a Linked Server OLE DB provider "MSDASQL"

我试图在 SQL 服务器中的链接服务器(基于 HANA)上执行以下简单语句:

UPDATE HANASERVER.."SAP_WORKSHOP"."CUSTOMER"
 SET "CUSTOMER_ID"='3' 
WHERE "CUSTOMER_NAME"='John'

不幸的是,服务器检索到以下错误消息,拒绝交易:

 The OLE DB provider "MSDASQL" for linked server "HANASERVER" could not UPDATE table "[HANASERVER]..[SAP_WORKSHOP].[CUSTOMER]" 

SELECT * 是可行的,因此连接已经过测试并且可以正常工作。

有人知道解决这个问题的方法吗?

谢谢, 路易吉

编辑:我忘了告诉我,我使用服务器作为 SYSTEM 用户,所以我确实有权在上面做所有事情,但不幸的是仍然无法工作。

编辑:我按照以下程序定义了链接服务器:

EXEC sp_addlinkedserver 
@server = 'HANASERVER', --description
@srvproduct = 'HANA_TEST',  --description
@provider = 'MSDASQL',  --Microsoft's OLE DB provider (FIXED NAME)
@datasrc = 'HANA_TEST'  --ODBC System DSN (OUR CONFIGURED SYSTEM DSN)

EXEC sp_addlinkedsrvlogin   
@useself= 'FALSE',  
@rmtsrvname = 'HANASERVER', --description
@locallogin = NULL, 
@rmtuser = 'SYSTEM',    --HANA User
@rmtpassword = 'XXXXXXXX'   --HANA Pswd

编辑:我目前在系统和链接服务器所在的远程服务器上使用 SSMS。但仍然无法解决问题。我正在尝试从查询 window 执行查询。 :)

如果您确认为链接服务器定义指定的用户具有更新 table:

的适当权限,请尝试使用此语法
update [linked-server].dbname.dbo.tablename
...
where
...

也尝试如下更新,特别是@provider 选项:

EXEC sp_addlinkedserver     
   @server=N'S1_instance1',   
   @srvproduct=N'',  
   @provider=N'SQLNCLI',   
   @datasrc=N'S1\instance1'; 

MSDN LINKED SERVER SPEC

已更新

检查 TCP/IP 和命名管道协议和端口。打开 SQL 服务器配置管理器并检查 SQL 服务器网络配置协议。您应该启用命名管道和 TCP/IP 协议。

我想我忘记了登录部分:

EXEC master.dbo.sp_addlinkedserver @server = N'SQL1', @srvproduct=N'SQL Server'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SQL1',@useself=N'False',@locallogin=NULL,@rmtuser=N'linkeduser',@rmtpassword='########'