需要什么角色才能允许在 Azure SQL 数据库中使用主数据库创建新数据库

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

我有一个要求,我需要通过打开主连接在azure SQL数据库中创建一个新数据库。因此,我需要检查该用户是否有权创建新数据库。对于传统 SQL,我向用户提供“dbcreator”卷并且

string query = "SELECT IS_SRVROLEMEMBER('dbcreator') IS_DBCREATOR";

使用上面的查询来检查用户是否有权创建新数据库。

现在我必须通过 Azure SQL 数据库实现同样的事情。那么我必须将什么卷分配给用户/服务器,以便我允许创建新数据库。我需要使用什么查询来检查用户是否具有创建者权限。

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

根据CREATE DATABASE文档

要创建数据库,用户登录必须是以下之一 校长:

  • 服务器级主体登录
  • 本地 Azure SQL Server 的 Azure AD 管理员
  • 作为 dbmanager 数据库角色成员的登录名

对于

dbmanager
角色成员资格,用户需要服务器级别登录、主数据库用户以及
dbmanager
数据库角色成员资格。

授予现有登录权限以在

master
数据库上下文中创建数据库的示例:

CREATE USER YourDbCreatorUser;
ALTER ROLE dbmanager ADD MEMBER YourDbCreatorUser;

检查当前用户的

dbmanager
数据库角色成员身份(在
master
数据库上下文中):

SELECT IS_MEMBER('dbmanager') IS_DBMANAGER;

要通过

CREATE DATABASE
角色成员资格或其他方式(例如管理员)检查当前用户是否具有
dbmanager
权限,请使用以下方法之一:

SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'CREATE ANY DATABASE') AS HasCreateDatabasePermissions; 

SELECT COALESCE((SELECT 1
    FROM fn_my_permissions ( NULL, 'SERVER' )
    WHERE permission_name = 'CREATE ANY DATABASE'), 0) AS HasCreateDatabasePermissions;

1
投票

您可以利用 dbmanagerloginmanager 角色向用户授予 权限 以创建新数据库。使用服务器管理员连接到主数据库并运行下面的命令为用户添加角色:

ALTER ROLE dbmanager ADD MEMBER <user>;
ALTER ROLE loginmanager ADD MEMBER <user>;

enter image description here

使用用户连接到主数据库并

create database <dbName>
创建表。运行成功如下图:

enter image description here

数据库创建成功如下图:

enter image description here

欲了解更多信息,您可以参考这个

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