创建数据库作为副本的权限

问题描述 投票:0回答:1

我在 Azure SQL 数据库弹性池“MyPool”中有两个数据库,名为 db1 和 db2。

我想将 db1 复制到新数据库 db3。

我应该能够做到这一点:

CREATE DATABASE db3 AS COPY OF db1 (SERVICE_OBJECTIVE = ELASTIC_POOL(name = MyPool))

我使用 SQL 登录“dbuser”通过 SSMS 连接到数据库服务器。

当我使用 SSMS 运行它并连接到“master”时,我得到:

没有足够的权限在服务器“mydbserver”上创建数据库副本。确保用户登录“dbuser”在源服务器和目标服务器上具有正确的权限。

根据文档,我应该只需将“dbuser”添加到角色“dbmanager”

https://learn.microsoft.com/en-us/azure/azure-sql/database/database-copy?view=azuresql&tabs=azure-powershell#copy-using-transact-sql

它表示:“为了使数据库复制成功,非服务器管理员的登录名必须是 dbmanager 角色的成员。”

所以在“master”中我运行:

ALTER ROLE dbmanager ADD MEMBER dbuser

运行成功。 (我也在db1中尝试过这个,但是dbmanager角色不存在。)

但是 CREATE DATABASE... AS COPY OF... 仍然给出上述错误。

我能做的只是:

CREATE DATABASE db3

它将创建一个空数据库。但添加“AS COPY OF”失败。

我也尝试省略将其添加到池中的子句 - 同样的错误。

我尝试将“dbuser”添加到 db1 上的“db_owner”角色。同样的错误。

需要什么才能让它发挥作用?

sql-server azure-sql-database
1个回答
0
投票

一件事是执行 Azure SQL 数据库副本所需的权限,另一件事是将数据库添加到 Azure 弹性池所需的权限。要将数据库添加到弹性池,您可能需要在 Azure 门户上的 IAM 访问控制上进行贡献者角色分配。

© www.soinside.com 2019 - 2024. All rights reserved.