【问题标题】:Can't view Proporties of Users, Roles and Schema on Azure Sql Server无法在 Azure Sql Server 上查看用户、角色和架构的属性
【发布时间】:2017-06-26 11:45:05
【问题描述】:

我有一个 Azure Sql Server,我想在其中更改一些用户、角色和架构。这适用于 Sql 查询,但我无法打开“属性”窗口。

但是在我的 On Premise 和 Local Sql Server 上,我可以毫无问题地查看它

我在哪里可以启用 Azure 上的属性窗口?

我已经尝试过 2012、2014、2016 和 2017 年的 ssms

【问题讨论】:

  • 您的本地数据库中是否有 db_owner 但 Azure 中没有?
  • 我都有 db_owner 。我在两者上都使用 db_owner 角色进行连接。
  • 嗯……似乎它可能是 Azure 的东西。你想做什么?可以通过alter role 语句在角色中添加/删除用户。
  • 令人难以置信的是,这在 U.I. 中不受支持

标签: sql-server azure ssms


【解决方案1】:

目前在 Azure 中,您只能使用 sql 脚本更改这些属性。非常烦人和不必要的复杂。设置权限后查看权限也是如此 - 仅限 SQL。

我发现以下 SQL 脚本有助于检查设置的权限

SELECT DISTINCT pr.principal_id, pr.name AS [UserName], 
    pr.type_desc AS [User_or_Role], 
    pr.authentication_type_desc AS [Auth_Type], pe.state_desc,
    pe.permission_name, pe.class_desc, o.[name] AS 'Object' 
FROM sys.database_principals AS pr 
JOIN sys.database_permissions AS pe 
    ON pe.grantee_principal_id = pr.principal_id
LEFT JOIN sys.objects AS o on (o.object_id = pe.major_id)

select m.name as Member, r.name as Role
from sys.database_role_members
inner join sys.database_principals m on 
    sys.database_role_members.member_principal_id = m.principal_id
inner join sys.database_principals r on 
    sys.database_role_members.role_principal_id = r.principal_id


SELECT DP1.name AS DatabaseRoleName,   
isnull (DP2.name, 'No members') AS DatabaseUserName   
FROM sys.database_role_members AS DRM  
RIGHT OUTER JOIN sys.database_principals AS DP1  
    ON DRM.role_principal_id = DP1.principal_id  
LEFT OUTER JOIN sys.database_principals AS DP2  
    ON DRM.member_principal_id = DP2.principal_id  
WHERE DP1.type = 'R'
ORDER BY DP1.name; 


SELECT p.name, prm.permission_name, prm.class_desc,
    prm.state_desc, p2.name as 'Database role',
    p3.name as 'Additional database role'
FROM sys.database_principals p
JOIN sys.database_permissions prm
   ON p.principal_id = prm.grantee_principal_id
LEFT JOIN sys.database_principals p2
   ON prm.major_id = p2.principal_id
LEFT JOIN sys.database_role_members r
   ON p.principal_id = r.member_principal_id
LEFT JOIN sys.database_principals p3
   ON r.role_principal_id = p3.principal_id
WHERE p.name <> 'public'

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 2020-04-05
    • 2018-03-02
    • 2011-02-17
    • 2011-12-08
    • 2012-06-08
    • 2011-10-15
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多