开发者社区> 问答> 正文

SAP HANA的Sql Server 2019外部表忽略Location子句中的架构

我正在寻找一种将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"');

展开
收起
祖安文状元 2020-01-05 14:35:11 685 0
1 条回答
写回答
取消 提交回答
  • 您可以尝试定义远程方的架构和对象吗?

    ) With
    (
         Data_Source = SAPHANA_HNQ,
         SCHEMA_NAME = 'SAPABAP1',
         OBJECT_NAME = 'TCURR'  
    );
    
    2020-01-05 14:35:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MaxCompute架构升级及开放性解读 立即下载
MaxCompute Serverless 架构演进 立即下载
阿里云消息队列的 Serverless架构演进 立即下载