无法在链接服务器 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';
已更新
检查 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='########'
我试图在 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';
已更新
检查 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='########'