无法在Azure中查看SSMS中的表,但可以执行select

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

我正在尝试向用户授予 Azure 中的 sql server 访问权限,但似乎遇到问题。

用户应具有只读访问权限。 必须能够在 SSMS 中查看表 /view/Programmability 可以点击查看底层脚本定义。
不应该能够创建、插入、删除、更改、修改。

这就是我在Master DB中所做的

CREATE LOGIN test1 WITH PASSWORD = 'Test123%57';

CREATE USER test1 FROM LOGIN test1

在实际数据库中

CREATE USER test1 FROM LOGIN test1 WITH DEFAULT_SCHEMA=dbo;

ALTER ROLE db_datareader ADD MEMBER test1 ;

Alter Role db_denydatawriter ADD Member test1 ;

GRANT SELECT TO test1

Grant VIEW DEFINITION To test1

完成上述操作后,用户可以运行任何选择查询并从任何表中获取结果(例如:select * from [PeopleTable])

但是当尝试扩展表/视图/可编程性时

enter image description here

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

无法在Azure中查看SSMS中的表,但可以执行select

按照以下方法查看 SSMS 中的表。

  • 创建示例数据库并将一些数据存储到示例表中。 enter image description here

  • 在 SSMS 中使用以下命令创建带有密码的

    login
    master db
    :

    CREATE LOGIN firstUser WITH PASSWORD = '*****';
    
  • 使用以下命令在主数据库中创建

    user

    CREATE USER firstUser FROM LOGIN firstUser;
    
  • 在数据库中创建与服务器中创建的用户相同的用户。确保

    user
    存在于主数据库中。

    CREATE USER firstUser FROM LOGIN firstUser;
    
  • 授予

    user
    权限,以使用以下命令从特定数据库中选择数据。

    GRANT SELECT ON DATABASE::firstDb TO firstUser;
    
  • 授予

    user
    只能查看数据但不能修改数据的权限。

    GRANT VIEW DEFINITION ON DATABASE::firstDB TO firstUser;
    

下面是输出,其中

user
可以查看数据但无法修改数据。 enter image description here

当用户尝试修改数据时,会抛出如下错误: enter image description here

正如 Thom 所建议的,可以通过使用密码创建

user
(而不是创建
login
)来查看数据。要创建带有密码的
user
,请按照以下方法操作:

  • master
    数据库和服务器中创建的示例数据库中创建一个具有密码的用户,如下所示。
    CREATE USER secondUser WITH PASSWORD = '****';
    
  • 授予用户从数据库中选择表的权限。
    GRANT SELECT ON DATABASE::firstDb TO secondUser;
    
  • 授予用户查看数据的权限,但不允许修改数据。
    GRANT VIEW DEFINITION ON DATABASE::firstDB TO secondUser;
    

输出: enter image description here

当用户尝试修改数据时,会抛出如下错误:

enter image description here

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