我正在寻找一种将Hana中的数据引入我们的Sql Server EDW的更好方法。当前,我们正在使用,OpenQuery但是我真的很想使用Sql Server的外部表功能,因为这样我就可以轻松地将许多计算需求推到Hana上,而无需创建复杂查询字符串。
但是,我的第一次尝试被证明是令人沮丧的,因为某些事情显然决定始终使用我的默认模式,而不是我提出的模式。
这是我用来SAPABAP1.TCURR从我们的一个Hana实例中拉回的测试代码(某些细节由于通常的原因而模糊不清):
If Object_Id('SAP.TCURR') Is Not Null
Drop External Table SAP.TCURR;
Go
If Exists (Select 1 From sys.external_data_sources Where name = 'SAPHANA_HNQ')
Drop External Data Source SAPHANA_HNQ;
Go
If Exists (Select 1 From sys.database_credentials Where name = 'Me@Hana')
Drop Database Scoped Credential Me@Hana;
Go
Create Database Scoped Credential Me@Hana With
Identity = 'rambler'
,Secret = '**SuperSecretSquirrelPassword**';
Go
Create External Data Source SAPHANA_HNQ With
(
Location ='ODBC://10.10.10.10:30015'
,Credential = Me@HANA
,Pushdown = On
,Connection_Options = 'Driver={HDBODBC};ServerNode=10.10.10.10:30015'
);
Go
Create External Table SAP.TCURR
(
MANDT NVarChar(3) Not Null
,KURST NVarChar(4) Not Null
,FCURR NVarChar(5) Not Null
,TCURR NVarChar(5) Not Null
,GDATU NVarChar(8) Not Null
,UKURS Numeric(9, 5) Not Null
,FFACT Numeric(9, 0) Not Null
,TFACT Numeric(9, 0) Not Null
) With
(
Data_Source = SAPHANA_HNQ
,Location = '"SAPABAP1"."TCURR"'
);
Go
Select *
From SAP.TCURR;
但是,执行此操作时,出现以下错误:
Msg 7320, Level 16, State 110, Line 28
Cannot execute the query "Remote Query" against OLE DB provider "MSOLEDBSQL" for linked server "(null)". 105082;Generic ODBC error: [SAP AG][LIBODBCHDB DLL][HDBODBC] Base table or view not found;259 invalid table name: Could not find table/view TCURR in schema RAMBLER: line 1 col 77 (at pos 76)
.```
我在做什么错,这使驱动程序要使用我的架构rambler而不是我给的架构SAPABAP1?我也尝试将Locationas 定义为just SAPABAP1.TCURR,但差异为零。
对于记录,以下命令可以OpenQuery返回数据:
```js
Select * From OpenQuery(SAPHANA_HNQ, 'Select * From "SAPABAP1"."TCURR"');
您可以尝试定义远程方的架构和对象吗?
) With
(
Data_Source = SAPHANA_HNQ,
SCHEMA_NAME = 'SAPABAP1',
OBJECT_NAME = 'TCURR'
);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。