熟悉 hana 开发环境 - baidu

33
2 熟悉 HANA 开发环境 在第 1 章中,笔者介绍了 SAP HANA 的基本概念及其主要服务器端的组件。本章将使 SAP HANA 工作台软件登录到一个 SAP HANA 系统,并快速了解 SAP HANA 的一些常 用操作。主要内容包括:第一次连接到 SAP HANA 系统,创建 Schema、表、视图,使用 SQL Console,导入数据等,创建用户,赋予角色,以及在不同的视角下进行切换,进入不 同的操作模式等。 2.1 环境准备 2.1.1

Upload: others

Post on 28-Feb-2022

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 熟悉 HANA 开发环境 - Baidu

第 2 章

熟悉 HANA 开发环境

在第 1 章中,笔者介绍了 SAP HANA 的基本概念及其主要服务器端的组件。本章将使

用 SAP HANA 工作台软件登录到一个 SAP HANA 系统,并快速了解 SAP HANA 的一些常

用操作。主要内容包括:第一次连接到 SAP HANA 系统,创建 Schema、表、视图,使用

SQL Console,导入数据等,创建用户,赋予角色,以及在不同的视角下进行切换,进入不

同的操作模式等。

2.1 环境准备

2.1.1 SAP HANA 服务器软件及硬件

开展 SAP HANA 项目或者实施 SAP 系统,到底应该买什么规格的硬件服务器?多少

个物理服务器、系统实例和配置、大概的价格范围等信息,在咨询公司的方案中通常都会

提供,所以客户可以直接参考这些信息。

如果打算自己做整个项目的实施,选择什么样的 SAP HANA 硬件是一个复杂的问题,

因为 SAP 官方要求 HANA 系统必须运行在认证过的环境上,并且提供了很多硬件配置和

不同的选择。

目前,共有超过 13 家主要硬件供应商(Unisys、Bull SAS、SGI、Lenovo、Huawei、

Dell、IBM、HP、Cisco、Hitachi、NEC、Fujitsu、VCE),并且提供超过 1210 种配置的

SAP HANA 硬件服务器供用户选择,用户可以在 SAP 官网上下载该硬件列表(见图 2-1),

Chapter 2

Page 2: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   11

或者在线查看能够采购的硬件信息。

图 2-1 SAP HANA 认证的硬件列表 -SAP HANA PAM 文档截图

在线硬件供应商列表的网址如下:http://global.sap.com/community/ebook/2014-09-02-

hana-hardware/enEN/appliances.html。

下面简要介绍用户采购 SAP HANA 硬件服务器的两个主要参考指标,其他的硬件配置

(如 CPU 架构、存储、文件系统、操作系统、存储系统)不需要用户太过关心,因为有些东

西是没法拆开的。例如,刚开始选择了一个单节点,但是后来想升级为 HANA 集群,那么

之前单节点的服务器是不能升级的。

第一个指标是 Memory Size(即服务器内存大小),计算公式如下:

需要采购的 SAP HANA 服务器内存(GB) = 需放入 HANA 的数据 / (5~7) * 2

第二个指标是 Appliance Type(即应用类型):

❑ Single Nod,单节点的部署(可以做 XS 原生开发)。

❑ Scale-Out,集群扩展的部署(可以做 XS 原生开发)。

❑ SoH,部署 Suite on HANA(只作为 SAP NetWeaver 系统的数据库,一般不做 XS 开发)。

因为硬件服务器中的 CPU、磁盘、内存、闪存等都有其规定的严格配比,然后被做

成一个 SAP HANA 硬件服务器的型号,不建议客户自定义攒机升级或者改变其物理配置,

所有的标准型号和配置均建议从供应商这边进行采购,自行攒机的话,会给未来的 SAP

HANA 生产系统的技术支持留下潜在的风险。

Page 3: 熟悉 HANA 开发环境 - Baidu

12   SAP HANA 平台应用开发

在没有 SAP HANA 服务器的情况下,可以在 AWS/Azure 上购买 SAP HANA 实例服

务。该服务按小时计费,是一个完整的 SAP HANA 环境。也可以购买阿里云大内存的 ECS

服务器,然后自己安装 SAP HANA 系统。

除此之外,因为 SAP 官方已经认证过 SAP HANA 是可以运行在认证 VMware 虚拟机

上的,所以,也可以在 VMware 上安装 SAP HANA 虚拟机,搭建出一个学习环境。

另外,可以自己准备一个高配置的笔记本或者台式机,或是在淘宝上买二手的 PC 服务

器,稍微加一点内存,就可以在上面直接安装 SAP HANA,用于自己学习。

这里有些事情需要提醒大家:

❑ 可以访问 http://www.hanapost.com/download 站点下载所需的 SAP HANA 软件。

❑ SAP HANA 认证的服务器硬件通常都配备闪存和磁盘,但有的服务器磁盘全都用闪

存盘来代替(例如,联想 R680 G7 和 IBM X3690 X5 型号)。在这种情况下,SAP

HANA 服务器设备就只有内存和闪存盘(SAP HANA 系统的日志和数据都会保存在

闪存盘上)。

❑ 在安装 SAP HANA 软件的过程中,唯一需要注意的地方就是,指定 Data Volumes 和

Log Volumes 的操作系统文件路径。 为 Data Volumes(存放 SAP HANA 系统的数据)

和 Log Volumes(存放 SAP HANA 系统的在线日志)所输入的操作系统文件路径必须

事先创建好,并且按照 SAP 官方要求的命名规则创建好。

通常 Data Volumes 所在的路径为 /hana/data/<SID>,对应到做完 RAID5 的磁盘设备,

该设备挂载到 /hana/data 目录;Log Volumes 所在的路径为 /hana/log/<SID>,闪存设备挂

载到 /hana/log 目录。

这里的 <SID> 指的是将要安装的 SAP HANA 系统的 ID。如果需要在同一个硬件服务

器上安装 1 个以上的 SAP HANA 系统实例(例如,安装一个开发机、一个测试机),就必

须创建不同的 <SID> 文件夹,用来区分不同 SAP HANA 系统的数据和日志文件。否则,

不需要。

2.1.2 SAP HANA 客户端软件

1. SAP HANA Studio

SAP HANA Studio 简称 SAP HANA 工作台,它是用于信息模型创建和 SAP HANA 系

统管理的客户端软件,其软件版本必须和 SAP HANA 数据库系统相同。如果 SAP HANA

系统的版本是 1.0 Revision 95,那么用户就需要在本地计算机上安装 SAP HANA Studio 1.0

Revision 95 版本的软件。图 2-2 所示为 SAP HANA 工作台的一个界面。

SAP HANA 工作台是基于开源 Eclipse 平台开发的一个客户端软件,并且使用了

Page 4: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   13

Equinox p2 框架简化了基于 Eclipse 插件的安装和部署。从技术角度来看,SAP HANA 工

作用的所有功能组件都是插件,且都是基于 Eclipse 平台基础而开发的。通过这个 SAP

HANA 客户端,可以对 SAP HANA 系统进行管理和服务器端应用的开发工作。

如图 2-3 所示,SAP HANA Web-based IDE(简称 SAP HANA Web IDE)和 SAP HANA

工作台的功能一样,它是 SAP HANA 工作台客户端软件的 Web 版本,提供了安全管理、

XS 开发、数据库对象管理等功能。即使不用 SAP HANA 工作台,也可以通过 SAP HANA

Web-based IDE 来进行 XS 项目开发。

图 2-2 SAP HANA 工作台的一个界面

图 2-3 SAP HANA Web IDE 界面

Page 5: 熟悉 HANA 开发环境 - Baidu

14   SAP HANA 平台应用开发

SAP HANA Web IDE 具有 Web 化的开发和管理界面,在当前的 XS 原生应用开发项目

中,会使用 SAP HANA 工作台。这个工具主要配合 SAP HCP(即 HANA Cloud Platfom,

HANA 云平台)进行使用。在 SAP HCP 上,可以注册成 SAP HANA 开发者,然后使用

Web IDE 开发基于 HANA 的原生应用,并可将其发布到 App Store 上。

关于 SAP HCP,可以访问 http://hcp.sap.com 获得更多信息,例如,如何注册,如何使

用 Web IDE、第一个基于 HCP 的 Hello World 程序等。

提示信息:

因为 SAP HANA 服务器软件安装、升级及其 SAP HANA 工作的安装都相对比较简单,而

且整个向导过程的步骤也不多,安装过程也就十几分钟,所以这里就不介绍相关内容了。

2. SAP HANA Client

SAP HANA Client 简称 SAP HANA 客户端软件,它是一组针对不同系统需要访问

SAP HANA 而准备的驱动程序的集合,根据需要,用户可以选择安装不同操作系统版本的

软件。例如,用户有一个安装在 Windows 服务器上的 BI 软件(例如 Tableau、Qlikview、

Lumria 等)需要访问 SAP HANA,那么就需要安装基于 Windows 系统相同版本的 SAP

HANA Client 软件。

SAP HANA Client 包含 ODBC、JDBC、ODBO/MDX、Python、C 等驱动程序组件。一

旦 SAP HANA Client 安装好,就可以利用这些驱动访问 SAP HANA 系统了,这和 Oracle

DB Client 软件非常相似。

提示信息:

如果用 SAP HANA 工作台去连接 SAP HANA 系统,那么并不需要再安装 SAP HANA

Client 软件,直接在 SAP HANA 工作台中连接到 SAP HANA 系统即可,并且还可以通过

浏览器直接访问 SAP HANA 系统提供的 Web 界面来执行系统管理和监控的一些操作。

2.2 第一次亲密接触

2.2.1 几个系统用户

SAP HANA 服务器安装好以后,表 2-1 中所示的 3 个用户都是需要提交到 SAP HANA

系统的管理和运维人员。

Page 6: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   15

表 2-1 重要的用户

用户名 类型 说明

root OS 用户 SUSE Linux 操作系统 root 用户,用于软件升级、安装等

<SID>adm OS 用户 <SID> 这个 SAP HANA 系统实例的管理用户

system HANA 系统用户 SAP HANA 数据库的管理员

root 用户是 SAP HANA 软件上运行的 SUSE Linux 操作系统的用户,在安装 SAP

HANA 软件、升级版本、新增服务器节点时都需要使用 root 用户来执行命令。在安装 SAP

HANA 软件的过程中,安装向导会提示用户为当前安装的 SAP HANA 系统定义一个 SID

(系统 ID)和 Instance Number(实例号)。

❑ SID 通常由字母和数字组成,例如,PRD、TR1、DEV 等。

❑ Instance Number 由两位数字组成。

❑ SID 和 Instance Number 共同组成了一个独立的 SAP HANA 系统。

在 SAP HANA 安装完成时,安装向导将创建一个新的操作系统用户,名为 <SID>adm。

如果 SAP HANA 系统的 SID 为 DEV,那么这个新操作系统用户将被命名为 devadm。这

个 <SID>adm 用户将用于整个 SAP HANA 系统的基本管理,例如,启动、停机、重启、备

份、恢复,以及通过命令行操作 SAP HANA 系统等。

在安装 SAP HANA 系统的过程中,安装向导会提示 root 用户为 SYSTEM 用户输入一

个初始密码。一旦系统安装完成,用户需要使用这个 SYSTEM 用户通过 SAP HANA 工作

台登录到 SAP HANA 系统中,然后创建新用户,为它赋予所需角色等。

提示信息:

接下来的所有操作,都将使用“ SYSTEM”这个管理员账户来完成,因为其权限比较

大,可以直接执行本节的所有操作。如果新创建一个用户,就需要介绍 SAP HANA 所提供

的角色和权限的说明。

对于 SAP HANA 的操作权限和角色,2.4 节会介绍 SAP HANA 的一些标准角色对象,

以及如何做角色管理。此外,在 12.2 节中,还会介绍不同的用户群访问 SAP HANA XS 应

用时需要哪些权限,以及如何去设计这些权限角色。

2.2.2 连接到 SAP HANA 系统

首先,启动 SAP HANA 工作台,此时界面将默认停留在“ Administration”视角下。

此时,在 SAP HANA System 的左边导航区空白处右击,然后在弹出的快捷菜单中选择

“Add System”命令,如图 2-4 所示。

Page 7: 熟悉 HANA 开发环境 - Baidu

16   SAP HANA 平台应用开发

图 2-4 添加一个新 SAP HANA 系统

弹出图 2-5 所示的窗口,在该窗口中,用户需要输入 SAP HANA 的连接信息。

图 2-5 填写系统信息

“ Host Name”是 SAP HANA 系统的 IP 地址或者服务器域名;“ Instance Number”是

SAP HANA 系统的实例号(安装系统时就设定好的);“Mode”则表示你连接的系统是一个

单实例 HANA(选择 Single Container),且是以多租户模式()安装的 HANA 系统。通常

在本地部署的 SAP HANA 系统都是单实例,因为这样便于内部维护。而多租户模式则在云

部署的方式下应用得比较多,不同的客户使用自己的 HANA DB,系统的备份和恢复都是

相互独立的。“ Local”表示当前连接使用什么语言连接到 SAP HANA 系统。填写好正确的

Page 8: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   17

信息之后,单击“Next”按钮,连接向导将进入图 2-6 所示的界面。

图 2-6 使用 SYSTEM 登录

在图 2-6 所示的界面上输入 SYSTEM 和密码。因为是第一次登录,HANA 系统会要求

用户修改 SYSTEM 的密码。单击“Next”按钮,进入下一步,如图 2-7 所示。

图 2-7 确认连接

如果之前填写的信息正确,在这一步的 Host 文本框中会显示 “ HANA 系统 IP 或域名:

3XX15”,然后单击“ Finish”按钮结束上述过程,在 SAP HANA 工作台中会出现刚才添

加的 SAP HANA 系统的连接信息。

Page 9: 熟悉 HANA 开发环境 - Baidu

18   SAP HANA 平台应用开发

注意事项:

在上述过程中,能够看到 SAP HANA 工作台通过“3XX15”端口和 SAP HANA 服务

器进行通信,如果存在双向的防火墙设置,需要开通对“3XX15”的端口访问。

“ XX”代表的是 SAP HANA 系统的 Instance Number(实例号,在安装 SAP HANA 系

统的时候由 root 用户指定)。图 2-7 中所示的“30015”意味着当前访问的这个 SAP HANA

系统的 Instance Number 为 00。除此之外,这个实例号还决定了 SAP HANA XS 服务器的

http 的访问端口,默认为“80XX”。

2.3 熟悉 SAP HANA 工作台

SAP HANA 工作台是一个客户端软件,是基于 Eclipse 核心并且遵守 GPL 规范进行的

扩展和功能开发。SAP 提供了不同操作系统版本的软件供用户下载。

SAP HANA 工作台的版本必须和 SAP HANA 服务器的版本相同,Revision 的版本尽量

不要相差太多,虽然其也支持向下兼容,但是毕竟不同的 SPS 版本还是有一些差异的,所

以,在项目开发中,尽量保持 SAP HANA 服务器和 SAP HANA 工作台软件版本的一致性。

作为和 SAP HANA 系统进行交互工作的客户端软件,SAP HANA 工作台软件提供了

如下功能:

❑ 对 SAP HANA 系统进行监控、安全管理、配置管理、审计、启动和升级、系统备份等。

❑ 在 SAP HANA 中创建数据库表、视图、存储过程、信息模型。

❑ 对 SAP HANA 进行 Data Provision 操作,从外部系统实时复制数据到 SAP HANA,或

者直接将离线 CSV 文件传输到数据库表中。

❑ 基于 SAP HANA 共享资源库进行 XS 原生应用的协同开发、部署、版本管理。

2.3.1 视角切换

在启动 SAP HANA 工作台客户端软件后,单击工具栏上的“ ”按钮,SAP HANA

工作台软件会出现图 2-8 所示的界面,用户选中不同的视角,然后单击“ OK”按钮,将会

使 SAP HANA 工作台切换到不同的视角中。

在 SAP HANA 工作台中最常用的视角有三个,下面对这三个视角及该视角下的能做的

一些操作进行简要介绍。

1. SAP HANA Administration Console 视角

在该视角下,用户可以对 SAP HANA 系统执行与系统管理相关的所有操作(例如,监

Page 10: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   19

控、权限、备份恢复等)。

图 2-8 SAP HANA 工作台视角切换

如图 2-9 所示,用户可以在这个视图下查看 SAP HANA 系统的基本管理信息(例如,

内存和 CPU 使用率),对系统进行配置、日志查看、安全审计和备份等操作。

图 2-9 SAP HANA 系统管理基本信息一览

Page 11: 熟悉 HANA 开发环境 - Baidu

20   SAP HANA 平台应用开发

在这个视角下,管理员用户可以对数据库进行运行监控和管理等操作,创建数据库

Schema、表、视图、存储过程,创建用户、角色、赋予权限等操作。此外,还可以单击

SQL Console 按钮,打开一个 SQL 查询的执行界面,然后直接输入 SQL 语句,执行需要完

成的操作。

提示信息:

在这个管理员视角下,能做的操作就是将 SAP HANA 当作一个数据库来进行常规的管

理操作。

2. SAP HANA Development 视角

这是 SAP HANA XS 原生应用的开发视角,也是本书中主要应用的视角。

如图 2-10 所示,在该视角下,用户可以使用 XS 系统资源库来管理项目,创建基于

SAP HANA 的原生应用程序。

图 2-10 SAP HANA 应用开发视角

3. SAP HANA Modeler 视角

这是 SAP HANA 信息建模的视角,在 SAP HANA 提供 XS 项目的开发功能之前,信

息建模视角和系统管理视角是 SAP HANA 工作台的主要功能。

Page 12: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   21

如图 2-11 所示,在该视角下,用户主要是创建信息模型(属性视图、分析视图、计算

视图,本书中统称为信息模型),并且将开发的内容打包为 Delivery Unit(简称 DU,交付

包),然后在 SAP HANA 系统中进行 DU 的导入 / 导出等。

图 2-11 Modeler 视角下的开发向导界面

注意事项:

因为 SAP HANA 信息建模的功能目前已经全部被整合到 XS 项目中,所有新开发的信

息建模的对象(属性视图、分析视图、计算视图、分析权限)都可以作为一个设计期对象

放在 XS 项目中。从长期来看,这个视角下的功能应该会被逐渐废弃,目前处于一个过渡

时期,所以还保留着这个视角。

因为很多老 SAP HANA 项目的 HANA 信息模型基本上都是直接在 Content 目录下开发

的,目前无法直接将其迁移到一个 XS 项目中(迁移过去之后,视图的名字和 package 都将发

生变化),所以,还保留着这个开发视角让客户可以维护原来在非 XS 项目中直接开发的视图。

2.3.2 SAP HANA 系统运行期对象

切换到“ Administration”视角,当前 SAP HANA 系统中的所有运行期可以执行的对象都

分布在以下 4 个文件夹中。展开一个 SAP HANA 系统,就能看到 Catalog、Content、Security、

Page 13: 熟悉 HANA 开发环境 - Baidu

22   SAP HANA 平台应用开发

Provisioning 这 4 个文件夹,每个文件夹中所保存的内容都是不同的,如图 2-12 所示。

图 2-12 SAP HANA 系统运行期的对象分类

1. Catalog 文件夹

Catalog 文件夹存放着当前 SAP HANA 系统下的所有 Schema,每个 Schema 可以被视

为一个单独数据库空间。用户可以创建新的 Schema,并且可以在新 Schema 下创建新的数

据库表、存储过程、Sequence、触发器、视图等。

2. Security 文件夹

Security 文件夹存放着当前系统的审计策略和设定信息,以及 SAP HANA 的所有用户、

角色。管理员用户可以直接在这里创建新的用户和角色,也可以对已有的用户和角色进行

权限上的调整。

3. Provisioning 文件夹

创建一些 SDA 的配置,为外部的其他数据源(见图 2-13)在 SAP HANA 中配置一个

连接对象。例如,创建一个 Oracle 的连接,这样可以在 SAP HANA 中通过 Virtual Table 作

为媒介对 Oracle 数据库中的表进行读 / 写操作。

图 2-13 Provisioning 支持的数据源

Page 14: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   23

4. Content 文件夹

在 Content 文件下存放着系统自带的业务内容和用户自己开发的业务内容,主要是信

息模型对象和分析权限,而且 Content 下面的 package 在展开之后,只会显示那些信息模型

对象,而将其他的 Web 对象统统隐藏起来了。如果用户需要查看这些 package 下被隐藏的

对象,需要切换到 Repositories 标签下进行查看。

如图 2-14 所示,即使不使用 XS 项目,用户也可以直接在这里创建 package、HANA

信息模型(属性视图、分析视图、计算视图)和分析权限对象。

图 2-14 运行期中 Content 下可以开发的对象

当然,直接在 Content 下创建对象是以前的方式,如果需要开发 XS 应用,那么自然而

然,就需要将这些对象创建到 XS 项目中。

注意事项:

即使用户不使用 XS 项目来进行开发,也可以做其他工作,例如,直接创建 Schema、

数据库表、存储过程、视图、HANA 信息模型、角色等。

但是,唯独 Web 对象是无法在这三个文件夹下进行开发的,在这种情况下 SAP HANA

中所开发的对象基本上是用来为外部的 BI 系统或者应用系统提供数据的。

在 SAP HANA 提供 XS 项目、资源库之后,所有的开发都可以迁移到 XS 项目中进行

开发,但是原来的功能还是继续保留,主要原因如下:

❑ 过去直接在 Content 下开发的对象,用户继续对其进行维护,暂时没必要迁移到一个

新的 XS 项目中。如果要迁移,原来访问这个信息模型的外部应用有可能也需要修改

代码(因为对象所在的 package 路径发生变化,那么激活后的列视图的名称也会带上

新的命名空间的路径)。

Page 15: 熟悉 HANA 开发环境 - Baidu

24   SAP HANA 平台应用开发

❑ 在项目上线后,SAP HANA 系统的管理员还会创建额外的数据库用户、新角色,供技

术支持人员来使用。

2.3.3 常用的三个按钮

在图 2-14 中,有三个按钮,这三个按钮是经常使用的,这三个按钮(从左到右的顺序)

的功能如下。

❑ System Monitoring( ):打开当前 SAP HANA 工作台中所有连接上的 SAP HANA 系

统基本监控信息界面。

❑ Administration( ):显示当前 SAP HANA 系统的信息界面,例如,CPU 利用率、内

存和磁盘使用占比等监控信息。

❑ SQL Console( ):打开一个新的 SQL 命令操作界面。用户可以在 SQL Console 中输

入各种 SQL 命令对 SAP HANA 系统进行操作。在后面的很多章节中,笔者只要提及

打开一个 SQL Console,就是这个界面。如图 2-15 所示,界面上的 TR1(SYSTEM)

意味着当前的这个 SQL Console 是用 SYSTEM 用户来连接到 TR1 这个系统的。

图 2-15 SQL Console 界面

用户可以输入 SQLScript 语句,然后单击 按钮或者按 F8 键执行该 SQL 代码,最后,

在 Result 选项卡中会出现这个 SQL 操作的结果,并且在下面的 log 区域会返回 SAP HANA

执行该 SQL 代码所花费的时间,以及处理是否成功的提示。如果出现错误(如权限不够、

语法不对),提示信息也会出现在 log 区域。

提示信息:

在 SAP HANA 工作台中,可能会使用多个不同的用户连接同一个 SAP HANA 系统。

如果要用不同的用户去执行 SQL Console 界面中的 SQL 语句,那么只需要单击 按钮,

就可以切换到其他的用户上。

Page 16: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   25

2.3.4 创建表和上传数据

1. HANA Schema

用户可以直接在 SQL Console 界面中输入以下 SQL 代码,从而创建一个名为 TEST 的

Schema 对象。如果不指定所有者,创建的 Schema 的所有者就是当前执行这个 SQL 的用户。

语法如下:

CREATE SCHEMA <schema_name> [OWNED BY <user_name>]

例子如下:

CREATE SCHEMA TEST OWNED BY SYSTEM

在 创 建 好 TEST 之 后, 启 动 SAP HANA 工 作 台, 使 用 SYSTEM 用 户 登 录 到 SAP

HANA 系统,然后展开 HANA 系统,打开 Catalog 文件夹,TEST 就出现在用户可以访

问的列表中了。除了上述这种命令行方式之外,也可以通过可视化向导创建新用户(参考

2.4.1 节)的方式来创建一个 Schema 对象。

在 SAP HANA 工作台中展开 Security 文件夹,右击,创建一个新用户,在最后激活

这个用户时,系统会创建一个和用户同名的 Schema。该用户就是这个同名 Schema 的拥有

者。可以对这个 Schema 进行任何操作,对这个 Schema 下的内容进行管理。

如图 2-16 所示,假如使用 SYSTEM 登录到系统,然后创建 DEMO、DEMO_2、HANA_

TPCH 三个新用户,系统就会自动在 Catalog 文件下创建出 3 个同名的 Schema 对象。

图 2-16 SAP HANA 系统中的 Schema 及展开后的内容

展开 Schema 对象,用户可以在其中创建各种数据对象,例如,列视图、数据库视

图、索引、表类型、存储过程、数据库表、触发器、序列对象等。除了用户自己创建的新

Page 17: 熟悉 HANA 开发环境 - Baidu

26   SAP HANA 平台应用开发

Schema 以外,系统也会默认自带一些 Schema。表 2-2 对这些系统默认的 Schema 进行了简

要介绍。

表 2-2 系统默认自带的一些 Schema系统 Schema 说  明

_SYS_BI 用户在 SAP HANA 中创建的信息模型的元信息(例如,多少维度、多少指标,

以及虚拟信息立方体的信息)都被保存在这个 Schema 中的数据库表中,例如,

所有分析视图和计算视图的元信息都保存在 BIMC_ALL_CUBES 表中

_SYS_BIC 在用户创建的信息模型、决策表被激活之后,将生成相应的 Column View(列

视图),这些列视图被保存在这个 Schema 下

_SYS_REPO 用户新开发的信息模型、XS 应用、开发包、发布包等对象都保存在这个

Schema 中,包括其不断更新、激活的版本信息。也可以理解成在进行应用开发

时的资源库

_SYS_SECURITY 保存着当前 SAP HANA 系统的密码、黑名单等

_SYS_STATISTICS 该 Schema 中主要用于 Statistics Server 保存系统运行状态(例如,有多少新创

建的数据库表、占用多少空间、CPU 运行负载、硬件和持久层的实时状态信息),

以及监控系统所用的数据库表

_SYS_XS 保存着用户开发的 XS 应用的运行期配置、访问统计等信息

注意事项:

因为前面提及了 SQL Console,这意味着用户可以在 SQL Console 中执行 SQLScript 脚

本,如 CREATE COLUMN TABLE、CREATE SCHEMA 等操作。既然可以创建对象,这

就引出了一个创建出来的对象的拥有者的问题,因此,这里做一些补充说明。

❑ 所有通过 SQL Console 创建的数据库对象,其拥有者是当前执行这个 SQL 命令的用

户。如果其他的用户希望访问这个数据库对象,只能让这个对象的拥有者赋予其操作

的权限,否则,即使是 SYSTEM 也无法访问。

❑ 所有在 XS 项目中创建数据库对象的定义,激活后产生的数据库对象的拥有者是

_SYS_REPO 这个系统用户。

2. HANA Table

前面我们使用 SYSTEM 账户登录了 HANA 系统,并且创建了 DEMO 用户,及其同名

的 Schema,接下来,就可以在 Schema 中创建数据库表了。

(1)使用图形界面

在 SAP HANA 工作台中,找到可以使用的 Schema 对

象,在该 Schema 对象上右击,在弹出的快捷菜单中选择

“New Table”命令,如图 2-17 所示。 图 2-17 创建新数据库表

Page 18: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   27

接下来,会在右边面板中出现图 2-18 所示的界面。用户可以在这个数据库表的定义面

板中实现以下功能:

❑ 定义新创建的数据库表的名称。

❑ 定义数据表的存储类型,即是行存储还是列存储。

❑ 定义数据库表所包含的字段及其 SQL 数据类型。

❑ 定义额外的索引对象。

图 2-18 数据库表定义

表 2-3 列出了在 SAP HANA 中可以使用的 SQL 数据类型,在创建数据库表时可以参

考进行引用。

表 2-3 SQL 数据类型

类别 HANA 中的具体类型 说  明

时间类型 DATE、TIME、SECONDDATE、TIMESTAMP 日期、时间、时间戳等信息

数字类型 T I N Y I N T 、 S M A L L I N T 、 I N T E G E R 、 B I G I N T 、

SMALLDECIMAL、DECIMAL、REAL、DOUBLE整型 / 非整型、大数字等类型

字符串 VARCHAR、NVARCHAR、ALPHANUM、SHORTTEXT 存储字符串类型的数据

二进制 VARBINARY 5KB 以内

对象类型 BLOB、CLOB、NCLOB、TEXT 图形和文本等,2GB 以内

(2)使用 SQL 命令行

直接在 SQL Console 中输入创建数据库表的命令,就可以得到和上一种方法相同的

结果。

语法如下:

CREATE [<table_type>] TABLE <table_name>...

举例如下:

CREATE COLUMN TABLE M_CUSTOMER_INFO (CUSTOMER_ID VARCHAR(8) PRIMARY KEY,

Page 19: 熟悉 HANA 开发环境 - Baidu

28   SAP HANA 平台应用开发

F_NAME VARCHAR(16), L_NAME VARCHAR(16));

如果需要参考源 Oracle 数据库系统的表,则可以将数据库表的 DDL 定义信息复制出

来,粘贴到 SAP HANA 工作台的 SQL Console 中,稍加调整就可以执行。

提示信息:

如果 Oracle 数据库中有大量表需要迁移到 SAP HANA 中,可以使用 SAP Data Services

或者 DS Workbench 工具,前提是设定好目标表的数据类型(可以和 Oracle 系统的中源表

类型不一致)。在运行该 ETL 作业时,Data Services 会自动在 SAP HANA 中创建相同 SQL

数据类型的数据库表。

3. 导入数据

SAP HANA 工作台中提供了 Import 功能,使用 Import 向导可以将离线文件导入已有

的数据库表中。下面将演示如何使用 Import 向导从本地计算机将离线 CSV 文件录入 SAP

HANA 系统的某个数据库表中。

具体步骤如下:首先在 SAP HANA 工作台中选择“File → Import”命令,打开如图 2-19

所示的界面,此时选择“Data from Local File”选项,然后单击“Next”按钮,进入下一步。

图 2-19 选择从本地加载数据

在“ Target System”向导界面中选择一个目标系统,以及以哪个用户来执行此次

Import 操作。

如图 2-20 所示,本次选择了“ TR2(SYSTEM)”作为目标系统(注:TR2 是 HANA

Page 20: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   29

系统,表示以 SYSTEM 为登录用户来执行这个操作),将数据导入 TR2 这个 SAP HANA 系

统,Import 数据的操作则使用 SYSTEM 这个账户来执行。

图 2-20 导入的目标系统

单击“Next”按钮,进入下一步,并且在图 2-21 所示的界面中设置以下参数。

❑ Source File:具体的 CSV 数据文件。

❑ Field Delimiter:离线文件的数据分隔符。

❑ Header Row:离线文件是否有头描述行。

❑ Import all data:从文件的第几行数据截止到第几行数据。

❑ Target Table :是将数据加载到现有的某个 Schema 中的数据库表,还是根据本地 CSV

文件的数据类型来新创建一个数据库表。

图 2-21 定义导入的属性

设置好上述信息后,单击“Next”按钮,进入下一步。

Page 21: 熟悉 HANA 开发环境 - Baidu

30   SAP HANA 平台应用开发

在图 2-22 所示的界面中,SAP HANA 工作台提取了一些“ data.csv”文件中的数据,

并显示在该界面左边的 Source Filed 区域,同时将其命名为 COLUMN_0、COLUMN_1、

COLUMN_2、COLUMN_3。

在图 2-21 所示界面右边的 Target Table 区域,将目标数据库表中的所有字段和类型信

息显示出来,供用户建立映射关系时使用。

最后,用户需要单击 按钮,建立离线数据文件列和目标数据库表列的一个映射关

系,完成后的效果如图 2-22 所示。

图 2-22 定义离线数据文件和目标表的映射关系

最后,单击“Finish”按钮完成整个过程。

在 Import 过程执行完成之后,右击目标数据库表,在弹出的快捷菜单中选择“ Open

Data Preview”命令,就可以显示出当前这个数据库表中所有数据记录,如图 2-23 所示。

到这里为止,关于使用 SAP HANA 工作台提供 Import 向导功能的介绍结束了。

Page 22: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   31

图 2-23 预览数据库表数据

提示信息:

在用户导入少量数据的情况下(例如,几十万条数据记录),使用 SAP HANA 工作台的

Import 向导工具较为快速。

如果用户需要导入的离线数据量较大(例如,离线数据文件超过几千万条记录或者容

量有好几个 GB),而当前环境中又没有 ETL 软件可以使用,则可以考虑在服务器端使用

Import 命令来进行导入,其基本的操作方式如下。

将离线文件复制到 HANA 系统所在的 Linux 系统中的某个目录下,在 SAP HANA 工

作台中打开 SQL Console,然后执行如下命令:

IMPORT FROM CSV FILE '/LINUX 目录 / 离线数据文件名 .csv' INTO " 目标 Schema"." 目标数据库表 "WITH RECORD DELIMITED BY '\n' FIELD DELIMITED BY ','THREADS 20 BATCH 5000;

使用 Import 命令可以将较大的离线数据文件导入到 SAP HANA 中,而且不需要任何

ETL 软件环境。关于 Import 命令更为详细的参数介绍,可以参考 SAP HANA SQL Reference

Manual 文档→ SQL Statement → Data Import Export Statements → IMPORT FROM 部分。该

文档的下载地址为:http://help.sap.com/hana/SAP_HANA_SQL_Reference_en.pdf。

2.4 用户、角色和授权管理

在 2.2. 节及之前的一些操作演示中,使用的都是 SYSTEM 这个 SAP HANA 默认的系

统管理员账户。通常,SYSTEM 用户只在做系统管理时使用,日常的应用层面的数据库技

术支持还是建议使用单独的新用户来执行。在 SAP HANA 系统中,通常有以下 5 类用户:

❑ 系统用户:对整个 HANA 系统进行系统级别的配置和管理的用户。例如,SYSTEM

Page 23: 熟悉 HANA 开发环境 - Baidu

32   SAP HANA 平台应用开发

用户就是其中之一。数据复制和备份恢复也建议创建单独的用户。

❑ 开发和应用支持用户:在 HANA 中创建数据库表,加载数据,创建信息模型、存储

过程、XS 应用程序,对开发的内容进行打包、导入 / 导出。应用支持用户通常是在系

统上线运行之后被创建的,其被赋予一定预定义的角色,或者直接使用提供的默认角

色和权限。

❑ 应用用户:在新开发的 XS 应用用户层面创建出来的 HANA 用户。其通常被赋予一些

基本的应用角色,但不会赋予某个 Schema 操作角色,而且这些角色也不会使用 SAP

HANA 工作台来登录系统。

❑ 监控用户:对 HANA 系统进行审计、日志和安全监控的用户,该用户对系统各项指

标进行监控。

❑ 技术和通信用户:这类用户主要是供后台自动登录后运行使用,或者供其他外部系统

访问 SAP HANA 时使用。例如,HANA 系统中的 _SYS、_SYS_REPO 和 _SYS_AFL

等用户,这些是用于实现系统内部通信和系统管理功能而设定的。

2.4.1 用户管理

除了前面介绍的 SYSTEM 用户之外,HANA 系统中还有很多默认的系统用户,这些系

统用户在 SAP HANA 系统安装完成以后就存在,如表 2-4 所示。

表 2-4 HANA 系统的默认技术用户

用户名 类  型 说  明

SYS 技术用户 SAP HANA 的系统表和视图(存储过程、触发器表、角色表、用户表、

权限对象表),都存在这个 Schema 中。读者可以自己展开这个 Schema 预

览 SYS 的一些视图的数据

_SYS_STATISTICS 技术用户 主要是 statistic server(统计分析服务器)在使用该用户,其收集和保

存系统状态、性能和资源使用情况的信息,然后保存在同名的 Schema 下

的数据库表中

_SYS_REPO 技术用户 主要是 SAP HANA 系统的资源库在使用,保存着设计期间的开发包、

开发对象(各种视图、存储过程、角色等),及激活后运行期对象

_SYS_AFL 技术用户 保存着 AFL(Application Function Libraries,应用功能库)的所有对象

_SYS_DATAPROV 技术用户 保存着数据抽取所有的相关视图、数据库表,及数据抽取的拥有对象

使用 SYSTEM 账户登录 SAP HANA 系统之后,这个用户有权限去创建新的用户,如

图 2-24 所示。

首先,展开 Security 文件夹,然后在 User 文件夹上右击,在弹出的快捷菜单中选择

“New User”命令,就可以新创建一个新用户。

同样的道理,可以选定已有用户,选择“ Delete”命令即可删除该用户;选择

Page 24: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   33

“ Open”命令,可以编辑该用户的一些信息(如修改密码、修改权限、激活 / 不激活用户

等操作)。

图 2-24 创建、修改和删除用户

图 2-25 所示为创建新用户的界面,在这个界面上用户可以为新用户设定用户名、密

码、所采用的登录方式,以及所拥有的权限和角色等属性。

图 2-25 创建新用户的管理界面

在创建新用户时,可以直接为这个用户赋予各种权限对象,也可以创建一个对应的新

角色,将权限对象赋予该角色,然后将该角色加入用户所拥有的角色中。此时用户、角色

和权限对象的关系如图 2-26 所示。

在新创建一个用户之后,如何用新用户登录到 SAP HANA 系统呢?

打开 SAP HANA 工作台,然后在已有的 SAP HANA 系统上右击,在弹出的快捷菜单

中选择“ Add Additional User...”命令,如图 2-27 所示(如果是第一次使用 SAP HANA 工

作台,请参考 2.2.2 节)。

Page 25: 熟悉 HANA 开发环境 - Baidu

34   SAP HANA 平台应用开发

图 2-26 角色、用户、权限对象的关系

图 2-27 使用新用户登录现有 SAP HANA 系统

接着,在弹出来的对话框中,选择“ Authentication by database user”单选按钮,然后

输入新创建的用户名和密码,单击“Finish”按钮完成该过程,如图 2-28 所示。

图 2-28 新用户和密码的输入界面

如图 2-29 所示,SAP HANA 工作台会将刚才创建的 SAP HANA 系统连接并添加到用

户导航区,并且在 SAP HANA 系统旁边显示登录的用户名。

同一个系统有两个登录用户,若用户对 TR3(HANA_TPCH)连接下的任何对象进行

操作,则表示用户当前是以“HANA_TPCH”用户在进行操作。

在图 2-29 所示界面中,展开 HANA_TPCH 用户连接的 SAP HANA 系统的 Catalog 文

件夹,除了发现该用户自己拥有的 HANA_TPCH 这个 Schema 对象之外,还能看见 DEMO

Page 26: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   35

这个 Schema 对象(SYS、_SYS_BI、_SYS_BIC 等系统对象对所有用户都可见),其他的

Schema 对象均看不见,这其实和授权相关,接下来的章节将介绍和权限相关的内容。

图 2-29 不同用户登录同一个 SAP HANA 系统

2.4.2 角色管理

角色管理,其实就是直接对运行期的角色进行创建、修改、删除等操作。在图 2-30 所

示菜单中,创建角色和创建用户非常类似,在 Role 文件夹上右击,在弹出的快捷菜单中选

择“New Role”命令,就可以打开创建角色(Role)向导界面。

图 2-30 创建新角色

HANA 角色到底包含着什么东西呢?

其实角色就是一组进行系统操作(例如,是否能够进行备份、恢复、重启等操作)和在

系统中对对象进行访问控制(是否能读、写、删除那些数据库表中的数据)的权限集合。访

问权限可以相互组合,从而形成不同的角色,不同的角色代表不同的职能,每个职能都用

于完成一组相关的系统操作。

在图 2-31 所示界面中,可以看到系统有很多不同名称的角色,有的角色是系统自带的

(例如,CONTENT_ADMIN、MODELING、PUBLIC),用户也可以根据业务需要创建新的

角色。

这里用 MODELING 这个系统自带的角色举例说明。在图 2-32 所示界面中,在角色列

表中双击 MODELING 这个角色,在右边的 HANA 工作台中会显示出该角色的详细信息。

Page 27: 熟悉 HANA 开发环境 - Baidu

36   SAP HANA 平台应用开发

可以看到每个角色都由 7 个选项卡组成。

图 2-31 SAP HANA 系统中的角色

图 2-32 角色的组成

接下来,就对 7 个选项卡中的内容进行简要介绍。

1. Granted Roles(包含的角色)

如果当前角色的 Granted Roles 选项卡中包含了一些其他的角色,则表示当前这个角色

将自动从这些角色中继承其所有的权限。

举例来说:现在新创建的一个角色名为 HANA_TEST,并且在其 Granted Role 中添加了

CONTENT_ADMIN 这个系统自带的角色,这意味着 HANA_TEST 角色拥有了 CONTENT_

ADMIN 所拥有的全部权限。

2. Part of Roles(被其他角色继承)

这部分信息是无法修改的,只显示当前这个角色是否被其他角色继承了。如果删除当

前这个角色,那么引用当前这个角色的其他角色也将失去从当前角色继承的所有权限。

举例来说:在显示 CONTENT_ADMIN 角色的信息时,切换到 Part of Roles 选项卡中,

将显示 HANA_TEST 角色的名称,因为 HANA_TEST 角色中继承 CONENT_ADMIN 角

色,以及其他的一些权限。

3. System Privileges(系统权限)

系统权限是 SAP HANA 系统默认自带的权限对象。为了简化用户对于权限的分配操

Page 28: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   37

作,SAP HANA 根据不同的系统操作默认定义了一些系统权限对象,在使用时只需要从列

表中选择好,然后加入当前角色就可以了。默认提供的系统权限对象如图 2-33 所示。

图 2-33 系统自带权限对象

为了让读者对系统权限有一个较为清楚的认识,表 2-5 中列出了一些常用的系统权限

所使用的场景和具体功能。

表 2-5 系统默认的系统权限对象列表

系统权限 权限范围和说明

AUDIT ADMIN 创建和维护审计策略,修改和审计相关的系统配置参数

CATALOG READ 访问(读取)所有的系统视图提供的信息,例如,在管理员视图下

能一览 SAP HANA 系统信息

CREATE SCHEMA 在系统中创建新的 Schema 权限

CREATE SCENARIO 在系统中创建新的数据计算场景(存储过程、各种视图等)的权限

CREATE STRUCTURED PRIVILEGE 创建结构化权限(即基于信息模型的分析权限)

STRUCTUREDPRIVILEGE ADMIN 管理结构化权限的权限

CREATE REMOTE SOURCE 可以创建远程数据源的权限,例如,使用 Smart Data Access(智能

数据访问)连接到其他的数据库

CREDENTIAL ADMIN 可以修改用户的认证信息

DATA ADMIN 可以访问所有系统视图所提供的信息,并能够执行任何 DDL 语句,

执行备份操作需要该权限

EXPORT 可以对数据库表执行 EXPORT TABLE 命令,导出数据

IMPORT 可以对数据库表执行 import 命令,例如,从离线 CSV 文件导入数

据库表

SESSION ADMIN 可以对连接 SAP HANA 系统的用户会话进行停止、中断连接等操作

USER ADMIN 管理(创建、修改、删除)用户

INIFILE ADMIN 对系统参数(扩展名为 .ini)进行维护

LICENSE ADMIN 为系统安装新的 License Key(软件许可)

Page 29: 熟悉 HANA 开发环境 - Baidu

38   SAP HANA 平台应用开发

系统权限 权限范围和说明

LOG ADMIN 对系统运行的日志配置进行修改,例如,开启或者关闭系统日志、

设置日志参数

OPTIMIZER ADMIN 对系统 SQL 计划缓存进行维护

ROLE ADMIN 管理(创建、修改、删除)角色

RESOURCE ADMIN 授权用户对系统资源进行监控和管理的权限

SAVEPOINT ADMIN 执行系统 Save Point 过程,例如,使用 ALTER SYSTEM SAVEPOINT命令

SERVICE ADMIN 管理 SAP HANA 系统的服务进程

VERSION ADMIN 授权用户可以执行 MVCC(多版本并发)命令

BACKUP ADMIN 具有执行对系统进行备份操作的权限

4. Object Privileges(对象权限)

这里所说的对象全都是 SQL Object(SQL 对象),这些 SQL 对象包括 Schema、数据库

表、视图、模型视图、存储过程、Sequence 等。

所谓对象权限,指的是拥有对这些对象进行操作的权限(每一种权限都代表一种具体

的操作),并且不同的 SQL 对象上所能执行的操作是不相同的。

举例来说,对于 DEMO 这个 Schema 类型的 SQL 对象,用户可以授予的权限有 CREATE

ANY、ALTER、DROP、EXECUTE、SELECT、INSERT、UPDATE、DELETE、TRIGGER、

DEBUG、INDEX、REFERENCE 等,如图 2-34 所示。

但是,如果用户选中 REORGANIZE_SHARED_MEMORY 存储过程,则会发现该 SQL

对象只有 4 个可授权的操作,即 ALTER、DROP、EXECUTE、DEBUG。

图 2-34 对象权限

如何添加 SQL 对象的操作权限呢?

(续)

Page 30: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   39

单击 按钮,然后输入关键字或者模糊查询,进行查找,找到所要的对象之后,将其

选中并添加到 SQL Object 列表中,然后单击这个 SQL 对象,在右边的权限面板中就可以

进行设定对该对象的哪些权限进行授权。

5. Analytic Privileges(分析权限)

首先,这里的分析权限指的是基于 SAP HANA 中的视图(属性视图、分析视图、计算视图)

创建的分析权限对象。在这些分析权限对象中,用户可以设定对某个视图的访问限制条件。

在定义一个角色时,将某个分析权限加进来,即表示该角色需要执行所有该分析权限

中所设定的访问限制条件等。

6. Package Privileges(开发包权限)

顾名思义,开发包权限就是对某个开发包(Package)的访问权限,这些访问权限包含

对开发包资源的浏览、编辑修改、重新激活、引用等。切换到“ Package Privileges”选项

卡,可以看到图 2-35 所示的界面。

在“ Package Name”列表中单击“ ”按钮,可以将需要访问的开发包添加到该列表

中,然后单击这个开发包,在右侧权限面板中就会出现对该开发包进行授权的操作界面。

一旦完成授权操作,这些授权的操作对该开发包下的子开发包同样生效(开发包下面

可以有若干层级的子开发包,并且可以设定多个层级)。表 2-6 对开发包上可以进行授权的

操作进行了简要的说明。

图 2-35 Package 权限

表 2-6 开发包权限对象及其说明

开发包权限 说  明

REPO.READ 对该开发包中包含的所有资源(例如,各种视图)进行读取的

权限

REPO.EDIT_NATIVE_OBJECTS 对在当前系统中创建的开发包中所有对象(即原生对象,

Native Objects)进行修改的权限

Page 31: 熟悉 HANA 开发环境 - Baidu

40   SAP HANA 平台应用开发

开发包权限 说  明

REPO.EDIT_IMPORTED_OBJECTS 对导入到当前系统中的开发包中的所有对象(即导入的对象,

Imported Objects)进行修改的权限。如果不是你创建的对象,这

些包也算是导入的对象

REPO.ACTIVATE_NATIVE_OBJECTS 对原生对象进行激活或者不激活的权限

REPO.ACTIVATE_IMPORTED_OBJECTS 对导入对象进行激活或者不激活的权限

REPO.MAINTAIN_NATIVE_PACKAGES 对原生的开发包进行更新、删除的权限

REPO.MAINTAIN_IMPORTED_PACKAGES 对导入的开发包进行更新、删除的权限。例如,在导入的开

发包下创建子开发包,加入新的开发对象

7. Application Privileges(应用权限)

这里的应用指的是基于 SAP HANA 开发的原生应用程序(即 XS 应用,第 5 章会详细

介绍)。在 XS 应用被激活时,会在系统中创建一些应用权限对象,在这些应用权限对象中

有对 XS 应用进行访问的权限设定,如图 2-36 所示。

图 2-36 XS 应用中定义的权限定义

在图 2-36 所示代码中,XS 应用程序中定义了两个权限对象,即 Basic 和 Admin。在

XS 应用被激活后,系统中就会自动生成两个应用权限。

在 XS 应用中可以使用应用权限来控制用户对 XS 应用的访问,如果某个用户需要访问

这个 XS 应用,那么就需要将这个应用权限对象赋予这个用户,或者直接按照用户分类创

建不同的角色,在角色中把应用权限放进来,然后再将角色赋予用户。这样,该用户就可

以访问这个 XS 应用了。

2.4.3 关于授权

接着 2.4.1 节的例子,在使用 HANA_TPCH 用户连接 SAP HANA 系统之后,在这个用

户的 Schema 列表中还能看到 DEMO 这个 Schema 对象,这是因为 HANA_TPCH 用户拥有

(续)

Page 32: 熟悉 HANA 开发环境 - Baidu

第 2 章 熟悉 HANA 开发环境   41

对 DEMO 对象的操作权限。打开 HANA_TPCH 用户的信息,如图 2-37 所示。

切换到“ Objective Privileges”选项卡,在 SQL Object 列表中能看到该用户拥有对

DEMO 对象进行 SELECT 操作的权限。同样,切换到其他权限选项卡,可以添加不同的权

限对象,然后进行一一授权。通过图 2-38 所示的说明,可以大致了解 SAP HANA 是如何

进行用户访问授权的。

图 2-37 编辑 HANA_TPCH 用户

图 2-38 HANA_TPCH 用户拥有 SQL 对象的操作权限列表

除此之外,用户也可以使用 SQL 命令行的方式来进行授权。使用 SQL 命令行进行授

权管理的相关语法如下。

语法:

ALTER USER < 需要修改权限的用户名 > < 修改选项 >

例子:

ALTER USER hana_tpch PASSWORD Sap12345

语法:

GRANT < 系统权限 > TO < 用户名 or 角色名 >

例子:

GRANT BACKUP ADMIN TO hana_tpch

语法:

GRANT <Schema 权限 > ON SCHEMA <Schema 名称 > TO < 用户名 or 角色名 >

Page 33: 熟悉 HANA 开发环境 - Baidu

42   SAP HANA 平台应用开发

例子:

GRANT TRIGGER DELETE DROP SELECT ON SCHEMA DEMO TO hana_tpch

语法:

GRANT < 对象权限 > ON < 对象名称 > TO < 用户名 or 角色名 >

例子:

GRANT ALL PRIVILEGES ON DEMO.TABLE_1 TO hana_tpch

语法:

GRANT <Role 名称 > TO < 用户名 or 角色名 >

下面介绍一个用 SQL 命令对用户访问控制进行授权的例子。创建一个用户,名为

tester,然后修改其默认密码为 Sap12345。接着创建一个新角色,将 DEMO 这个 Schema 对

象的 SELECT 权限赋予该角色,并且将 DEMO 中的数据库表 sales 的 INSERT、UPDATE、

SELECT 等权限也赋予该角色,最后将这个角色赋予用户 tester。

CREATE USER tester PASSWORD initial1;ALTER USER tester PASSWORD Sap12345;

CREATE ROLE role_for_modeling;GRANT SELECT ON SCHEMA demo TO role_for_modeling;GRANT SELECT INSERT UPDATE ON demo.sales TO role_for_modeling;GRANT role_for_modeling TO tester;

提示信息:

上面的 SQL 示例代码及语法只是权限访问控制中经常使用的一部分内容,更多关于

访问权限相关的 SQL 命令请参考:SAP HANA SQL Reference 文档→ SQL Statement 章节

→ Access Control Statement,可以在 http://help.sap.com/hana_platform 下载这个文档。

因为在 SAP HANA 工作台中,用户要通过向导操作来管理所有的授权操作,只需要掌

握如何赋予权限,以及该权限的意义即可,并不需要用户掌握所有使用 SQL 来进行授权管

理的命令语法。