Sql server 如何在Azure数据仓库(Synapse)中授予架构级权限?
在我们的Azure SQL数据仓库(Synapse)中,我们有两个模式Sql server 如何在Azure数据仓库(Synapse)中授予架构级权限?,sql-server,azure,azure-active-directory,database-schema,azure-synapse,Sql Server,Azure,Azure Active Directory,Database Schema,Azure Synapse,在我们的Azure SQL数据仓库(Synapse)中,我们有两个模式dbo和staging。 我只想将架构级别的权限授予我的Azure Active Directory组用户“dbo”架构。我正在寻找的预期行为是,授予此权限后,Azure Active Directory组用户在ssms中打开数据库时不应看到暂存架构。我尝试了以下方法来创建用户并授予权限,但用户仍然可以在其SSM中看到stagingschema 我创建了用户并使用以下命令添加了db_datareader角色: 然后使用以下命令
dbo
和staging
。
我只想将架构级别的权限授予我的Azure Active Directory组用户“dbo”架构。我正在寻找的预期行为是,授予此权限后,Azure Active Directory组用户在ssms中打开数据库时不应看到暂存
架构。我尝试了以下方法来创建用户并授予权限,但用户仍然可以在其SSM中看到staging
schema
db_datareader
角色:db_datareader
角色可以查看所有模式。所以我们需要撤销这个权限
有两种方法可以解决这个问题:
db_datareader
权限并将该权限授予用户EXEC sp_droprolember'db_datareader','Azure Active Directory组'
将SCHEMA::dbo上的SELECT授予[Azure Active Directory组]
创建角色;
将schema::dbo上的SELECT授予;
EXEC sp_addrolemember“”,“Azure Active Directory组”
谢谢,@Joseog Xu,为什么在撤销db_datareader
后,我不能直接使用将SCHEMA::dbo上的SELECT授予[Azure Active Directory组]
?为什么我需要创建外部\u用户
角色?您还可以直接使用将SCHEMA::dbo上的SELECT授予[Azure Active Directory组]
external_users
是我创建的自定义角色的名称,您不需要创建角色。创建自定义角色是为了重用此权限。您好@mas,我已经更新了我的答案。如果您需要更多信息,请告诉我。
CREATE USER [Azure Active Directory Group] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo;
EXEC sp_addrolemember 'db_datareader', 'Azure Active Directory Group'
GRANT SELECT ON SCHEMA::dbo TO [Azure Active Directory Group]
select pr.name,
pr.type_desc,
pe.permission_name,
pe.state_desc,
pe.class_desc,
object_name(pe.major_id)
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id where name='Azure Active Directory Group Users';