云铸造厂。 无法创建表:错误:权限不足:未经授权

2020-09-21 13:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨! 我正在学习与SAP Cl...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨!

我正在学习与SAP Cloud Foundry和SAP HANA服务(SAP Cloud Platform提供)一起使用。

我已成功将SAP HANA服务与应用程序绑定,并使用node.js和模块hdb也成功连接至SAP HANA:

 var env = JSON.parse(process.env.VCAP_SERVICES);
     var hanaData = env.hanatrial [0] .credentials;

     var client = hdb.createClient({
         主机:hanaData.host,
         端口:hanaData.port,
         用户:hanaData.user,
         密码:hanaData.password
     }); 

我可以访问HANA数据库并从'DUMMY'表中选择数据(当我使用git构建应用程序时: https://github.com/SAP/node-hdb

 client.exec('从DUMMY中选择*,功能(错误,行){
 client.end();
     如果(错误){
       返回console.error('执行错误:',err);
     }
     console.log('Results:',行); 

但是我无法创建自己的表,因为我一直都在错误(错误:权限不足:未授权)(使用此类SQL):

创建列表'+ hanaData.schema +'.test(id int不为null,名称nvarchar(256)不为null)

创建列表测试(id int不为null,名称nvarchar(256)不为null)

(我想这些SQL代码没有语法错误)

另外,我无法从表SYS.USERS中选择数据来获取有关我的用户授权的信息。 我无法向用户授予任何特权:

 ALTER USER'+ hanaData.user +'GRANT在自己的架构上创建任何内容
在模式上进行GRANT SELECT'+ hanaData.schema +'TO'+ hanaData.user +'WITH GRANT OPTION 

您能帮我回答吗?

1。 生成的试用版Cloud Foundry帐户的HANA用户是否有创建表的特权?

2。 我的SQL查询中有错误吗?

3条回答
宇峰Kouji
2020-09-21 14:23

玛格丽塔嗨,

您是否尝试根据VCAP_SERVICES变量设置架构?

VCAP_SERVICES将分配一个用户和一个特定于特定模式名称的密码-该模式名称代表HDI容器。 该容器将包含一个单一的架构,您将对其具有有限的访问权限。 HDI不允许您控制架构授权-所需的授权已在运行时提供给用户。 据我了解,除hdi服务代理本身之外,没有其他人有权更改数据库对象。 因此,即使使用数据库用户(SBS),您也将无法创建表,视图等。原因是您实际上不应该向HANA DB发出SQL命令来创建这些工件。 您应该使用设计时工件来让HDI Service Broker为您制作必要的SQL命令。 因此,如果需要创建表,则需要首先在hdb模块内的cds工件中对它们进行建模。 构建此模块后,基于hdi的数据库将包含可以使用SQL控制台为其发出select语句的表。

我还了解到,如果您正在开发JPA应用程序,则需要避免DDL生成(ddl-auto = none)。 否则,您的应用程序将永远无法启动-它将抱怨缺少授权。 它确实缺少并且永远不会拥有,因为它不是我们正在谈论的服务代理连接。 您需要让它相信表已经创建。 这种方法的问题在于,您需要执行一些额外的工作:将JPA实体映射到hdb模块内的cds工件中并进行构建。 将您的应用程序绑定到HDI容器后,它将可以正常工作。

希望这会有所帮助!

关于,
伊凡



一周热门 更多>