如何在azure postgresql服务上创建数据库模板

如何在azure postgresql服务上创建数据库模板,postgresql,azure-database-postgresql,Postgresql,Azure Database Postgresql,在使用postgresql om azure的数据库服务时,似乎无法创建自定义模板数据库 我想要实现的是,作为一个常规帐户,csn将创建启用特定扩展的新数据库。 可以委托创建,但在我对初始数据库管理员帐户以外的所有帐户的测试中,扩展的启用都失败。我刚刚在Azure database for PostgreSQL中尝试了以下操作,并且成功了(请耐心等待我在Azure中为您介绍我的步骤) 在Azure CLI(bash)中创建新资源组>在其中创建PG服务器>在该PG服务器上创建新数据库(origin

在使用postgresql om azure的数据库服务时,似乎无法创建自定义模板数据库

我想要实现的是,作为一个常规帐户,csn将创建启用特定扩展的新数据库。
可以委托创建,但在我对初始数据库管理员帐户以外的所有帐户的测试中,扩展的启用都失败。

我刚刚在Azure database for PostgreSQL中尝试了以下操作,并且成功了(请耐心等待我在Azure中为您介绍我的步骤)

  • 在Azure CLI(bash)中创建新资源组>在其中创建PG服务器>在该PG服务器上创建新数据库(originaldb)。一切都很好
  • 然后我为orginaldb(我在步骤1中创建的DB)启用了earthdistance和cube(earthdistance的pre-req)扩展
  • 然后,我使用CLI使用orginaldb作为模板创建另一个DB(dbclone): 创建数据库dbclone模板originaldb; 它工作得很好,在dbclone DB中启用了cube和earthdistance扩展
  • 现在让我们用另一个PG用户来试试:我创建了一个PG用户(user1),并授予这个用户DB创建权限
  • 然后,我以user1身份登录到服务器,并使用相同的命令从CLI创建了另一个DB: 创建数据库dbclone2模板originaldb; 它也起了作用,我看到在dbclone2数据库中启用了cube和earthdistance扩展
    这就是你想做的吗?您是按照相同的步骤出错,还是尝试做一些不同的事情?

    我不知道Azure服务,但使用stock Postgres,您可以使用任何数据库作为模板。没有必要将其标记为模板数据库。唯一的限制是,如果您克隆源数据库,则不允许连接到它。谢谢,将检查这是否适用于meAzure不允许将常规数据库用作模板。他们更改了许可系统的部分内容,但找不到任何关于什么应该起作用的文档。我大致就是这么做的。我采取的步骤是:1。使用以下命令创建数据库:创建数据库我的模板LC\u COLLATE'en-US'LC\u CTYPE'en-US'编码'UTF8'模板模板0;2.通过\c my_模板(同一会话)连接到该数据库,并称为CREATE EXTENSION tablefunc;3.现在,与能够创建数据库的用户创建了一个会话,并尝试了以下命令:createdatabasesubtemplate my_TEMPLATE;3.“错误权限被拒绝复制数据库”my_template“失败。我终于发现我做了不同的事情。我使用主postgres管理员帐户创建子管理员帐户(仅具有create role和create db权限)。利用这个角色,我可以按照上面的步骤来做。但使用此角色,创建一个新角色,例如clientdb。此用户无法访问my_模板数据库。即使“子管理员”创建了my_模板数据库,也无法创建它。主要区别在于,clientdb角色不能创建新角色,而子管理员可以创建新角色。这有意义吗@NikLarinMSFT?是的,我明白了。据我所知,它不是特定于Azure中的PostgreSQL,但在任何Postgre中都是相同的,例如本地安装的实例。我不确定。我修改了我们从postgresql 8系列开始运行的代码。只允许用tablefunc替换c语言扩展,因为我需要交叉表。在多个postgresql实例上创建了数千个上述数据库。唯一的其他更改是用户名,它现在需要一个实例。@如果您可以列出复制在本地PostgreSQL实例中工作而在Azure中的PostgreSQL中不工作的内容的最低步骤,我们可以研究一下。我尝试创建另一个PG角色,该角色可以登录并创建数据库,但没有任何其他PG权限,并且我能够在尝试使用模板创建DB时重新记录您的错误。我的本地PG 9.6和Azure中的PG(9.6)的行为是相同的。