我试图在SQL Server中的链接服务器(基于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。但仍无法解决问题。我正在尝试从查询窗口执行查询。 :)
答案 0 :(得分:0)
如果您确认为链接服务器定义指定的用户具有更新表的适当权限,请尝试使用此语法:
update [linked-server].dbname.dbo.tablename
...
where
...
还尝试更新如下,特别是@provider选项:
EXEC sp_addlinkedserver
@server=N'S1_instance1',
@srvproduct=N'',
@provider=N'SQLNCLI',
@datasrc=N'S1\instance1';
已更新
检查TCP / IP和命名管道协议和端口。打开SQL Server配置管理器并检查SQL Server网络配置协议。您应该启用命名管道和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='########'