无法使用execBatch()在Hana数据库中创建用户

Shreyasi Chakraborty

我有一个XSA系统和XSA数据库用户。该XSA DB用户将用于在XSA中创建新的Hana数据库用户。我正在尝试通过execBatch()功能创建一批用户。我对node.js项目有一个上限。

我正在node.js文件中执行sql查询。以下是代码-

console.log("Targeting User Creation")
try{
       let createuserstatement = await xsaDbConn.preparePromisified("CREATE USER ? PASSWORD AbcYes NO FORCE_FIRST_PASSWORD_CHANGE")
       await createuserstatement.execBatch(createusersarr)
       console.log(`Users created.`) 
}catch(err){
       console.log(err.stack)
}

createusersarr是包含要创建的用户列表的数组。数组看起来像这样-

[ [ 'SAC_XSA_HDB_USER_ABC1' ], [ 'SAC_XSA_HDB_USER_ABC2' ], 
  [ 'SAC_XSA_HDB_USER_ABC3' ], [ 'SAC_XSA_HDB_USER_ABC4' ], 
  [ 'SAC_XSA_HDB_USER_ABC5' ], [ 'SAC_XSA_HDB_USER_ABC6' ], 
  [ 'SAC_XSA_HDB_USER_ABC7' ], [ 'SAC_XSA_HDB_USER_ABC8' ], 
  [ 'SAC_XSA_HDB_USER_ABC9' ], [ 'SAC_XSA_HDB_USER_ABC10' ] ]

当我运行节点应用程序时,

它不会创建用户,并且显示的错误未定义,如下所示-

ERROR - Targeting User Creation

undefined

我不确定为什么会失败?当我使用exec()而不是execBatch()并在创建用户查询(基本循环机制)中一一提供用户名时,它运行良好。

Astentx

要解决该问题,可以使用HANA Studio或XSA SQL控制台来查看该语句CREATE USER ? PASSWORD "qwe"不能使用占位符。用户名是一个对象,占位符仅是参数,它们不能替代对象名。

我没有找到doc链接(这是SAP,所以并不感到惊讶),但是在其他数据库中它可以这种方式工作。

编辑:“对象”是指在数据库系统表中保留的东西:表,视图,序列,函数,用户,角色,特权等。它是实体,可以作为模型的一部分或系统的一部分,您可以“使用”(调用,选择,创建,更改等)。它是语法的一部分(在文档中可以找到它)。数据是您可以操纵的内容,并且可以用占位符代替。当然,元数据也存储在某个地方,但这是另一个抽象层次。

为了使您的用户名成为数据,您应该编写一些过程,该过程采用一个用户名,创建SQL语句并发出该语句EXECUTE IMMEDIATE(因此它要求SQL解析器按原样解析整个字符串)。然后,您应该使用?作为用户名参数,并传递要创建的动态用户名。

create procedure p_create_user( in p_uname nvarchar(20))
language sqlscript
sql security invoker
as
begin
  declare lv_sql nvarchar(1000);
  lv_sql := replace('create user <uname> password "QWEasd!23"', '<uname>', p_uname);
  execute immediate lv_sql;
end;

call p_create_user('demo');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Java在MongoDB中创建数据库用户

来自分类Dev

无法获得新的用户注册,无法使用Devise Gem将用户创建到数据库

来自分类Dev

无法在phpMyAdmin中创建数据库

来自分类Dev

无法在android中创建数据库

来自分类Dev

无法在phpMyAdmin中创建数据库

来自分类Dev

无法使用psql创建数据库

来自分类Dev

无法使用psql创建数据库

来自分类Dev

创建无法保存到数据库的Django演示用户

来自分类Dev

Django无法在“默认”以外的其他数据库中创建超级用户

来自分类Dev

无法在plesk 12.5中创建具有完全访问权限的新数据库用户

来自分类Dev

无法使用服务主体创建映射到 Azure AD 身份的 Azure SQL 数据库用户

来自分类Dev

如何在HANA SQL数据库中列出用户定义的类型?

来自分类Dev

在bash脚本中创建mysql数据库和用户

来自分类Dev

如何在Django中创建用户特定的数据库?

来自分类Dev

允许用户在数据库中创建表

来自分类Dev

在SQL Server数据库中创建用户

来自分类Dev

Php不在数据库中创建用户

来自分类Dev

使用外部数据库中的信息在登录时在WordPress网站上创建用户帐户

来自分类Dev

在DB2中使用DDL创建数据库用户

来自分类Dev

使用Qt(C ++)execBatch()插入Oracle,此后,在数据库中仅插入一个字符“字符串”

来自分类Dev

用户无法使用 PHP 表单更新 MySQL 数据库中的信息

来自分类Dev

使用Dapper无法从数据库检索用户ID

来自分类Dev

在Rails中无法在数据库中创建记录

来自分类Dev

通过数据库隧道访问云中的HANA时,HANA Studio锁定数据库用户

来自分类Dev

无法使用相同的ID在数据库中重新创建Google Datastore密钥

来自分类Dev

无法在C中使用libpq在数据库中创建表

来自分类Dev

使用EntityFramework的CodeFirst无法在SQL Server管理中创建数据库

来自分类Dev

无法使用 Django oracle12c 在数据库中创建表

来自分类Dev

无法在Django 1.7中创建South数据库模型

Related 相关文章

  1. 1

    使用Java在MongoDB中创建数据库用户

  2. 2

    无法获得新的用户注册,无法使用Devise Gem将用户创建到数据库

  3. 3

    无法在phpMyAdmin中创建数据库

  4. 4

    无法在android中创建数据库

  5. 5

    无法在phpMyAdmin中创建数据库

  6. 6

    无法使用psql创建数据库

  7. 7

    无法使用psql创建数据库

  8. 8

    创建无法保存到数据库的Django演示用户

  9. 9

    Django无法在“默认”以外的其他数据库中创建超级用户

  10. 10

    无法在plesk 12.5中创建具有完全访问权限的新数据库用户

  11. 11

    无法使用服务主体创建映射到 Azure AD 身份的 Azure SQL 数据库用户

  12. 12

    如何在HANA SQL数据库中列出用户定义的类型?

  13. 13

    在bash脚本中创建mysql数据库和用户

  14. 14

    如何在Django中创建用户特定的数据库?

  15. 15

    允许用户在数据库中创建表

  16. 16

    在SQL Server数据库中创建用户

  17. 17

    Php不在数据库中创建用户

  18. 18

    使用外部数据库中的信息在登录时在WordPress网站上创建用户帐户

  19. 19

    在DB2中使用DDL创建数据库用户

  20. 20

    使用Qt(C ++)execBatch()插入Oracle,此后,在数据库中仅插入一个字符“字符串”

  21. 21

    用户无法使用 PHP 表单更新 MySQL 数据库中的信息

  22. 22

    使用Dapper无法从数据库检索用户ID

  23. 23

    在Rails中无法在数据库中创建记录

  24. 24

    通过数据库隧道访问云中的HANA时,HANA Studio锁定数据库用户

  25. 25

    无法使用相同的ID在数据库中重新创建Google Datastore密钥

  26. 26

    无法在C中使用libpq在数据库中创建表

  27. 27

    使用EntityFramework的CodeFirst无法在SQL Server管理中创建数据库

  28. 28

    无法使用 Django oracle12c 在数据库中创建表

  29. 29

    无法在Django 1.7中创建South数据库模型

热门标签

归档