Sql Server 2019 External Table to SAP HANA ignoring Schema in Location 子句
Sql Server 2019 External Table to SAP HANA ignoring Schema in Location clause
我正在寻找一种更好的方法将 Hana 中的数据导入我们的 Sql 服务器 EDW。目前我们正在使用 OpenQuery
,但我真的很想开始使用 Sql 服务器的外部表功能,因为这样我就可以轻松地将大部分计算需求下推到 Hana,而无需创建复杂的查询字符串。
然而,我的第一次尝试被证明是令人沮丧的,因为某些事情显然决定始终使用我的默认模式而不是我提供的模式。
这是我用来从我们的一个 Hana 实例 中撤回 SAPABAP1.TCURR
的测试代码(某些细节由于通常的原因而被掩盖):
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
我做错了什么?我还尝试将 Location
定义为 SAPABAP1.TCURR
,但结果为零。
备案,以下OpenQuery
returns数据返回就好了:
Select * From OpenQuery(SAPHANA_HNQ, 'Select * From "SAPABAP1"."TCURR"');
Sql 服务器 2019 RTM
您可以尝试定义远程端的架构和对象吗?
) With
(
Data_Source = SAPHANA_HNQ,
SCHEMA_NAME = 'SAPABAP1',
OBJECT_NAME = 'TCURR'
);
这些对我有用
Location = '.SAPABAP1.TCURR'
我正在寻找一种更好的方法将 Hana 中的数据导入我们的 Sql 服务器 EDW。目前我们正在使用 OpenQuery
,但我真的很想开始使用 Sql 服务器的外部表功能,因为这样我就可以轻松地将大部分计算需求下推到 Hana,而无需创建复杂的查询字符串。
然而,我的第一次尝试被证明是令人沮丧的,因为某些事情显然决定始终使用我的默认模式而不是我提供的模式。
这是我用来从我们的一个 Hana 实例 中撤回 SAPABAP1.TCURR
的测试代码(某些细节由于通常的原因而被掩盖):
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
我做错了什么?我还尝试将 Location
定义为 SAPABAP1.TCURR
,但结果为零。
备案,以下OpenQuery
returns数据返回就好了:
Select * From OpenQuery(SAPHANA_HNQ, 'Select * From "SAPABAP1"."TCURR"');
Sql 服务器 2019 RTM
您可以尝试定义远程端的架构和对象吗?
) With
(
Data_Source = SAPHANA_HNQ,
SCHEMA_NAME = 'SAPABAP1',
OBJECT_NAME = 'TCURR'
);
这些对我有用
Location = '.SAPABAP1.TCURR'