gpt4 book ai didi

sql-server - 如何创建一个可以创建/更改/删除 View 但不能表、可以读取数据但不能插入/更新/删除/截断数据的 Azure SQL 数据库用户?

转载 作者:行者123 更新时间:2023-12-03 00:18:41 27 4
gpt4 key购买 nike

是否可以创建一个 Azure SQL 数据库用户来执行以下操作:

  • 针对所有表和 View 进行 SELECT
  • 创建/更改/删除 View

但用户不应该拥有以下权限:

  • 针对任何表或 View 插入/更新/删除/截断表
  • 创建/更改/删除任何表

实现上述要求的正确语句是什么,或者在 Azure SQL 中不可能实现?

我尝试了以下语句,没有最后一条语句,用户无法创建 View ,但添加最后一条语句用户可以删除表。

CREATE USER [TestUser] WITH PASSWORD=N'NAvCO_h2eMuX', DEFAULT_SCHEMA=[dbo];

CREATE ROLE [TestRole];

ALTER ROLE [TestRole] ADD MEMBER [TestUser];

ALTER ROLE [db_datareader] ADD MEMBER [TestRole];

GRANT CREATE VIEW TO [TestRole];

GRANT SELECT ON SCHEMA :: dbo TO [TestRole];

GRANT ALTER ON SCHEMA :: dbo TO [TestRole];

最佳答案

当您运行ALTER ROLE [db_datareader] ADD MEMBER [TestRole]GRANT SELECT ON SCHEMA::dbo TO [TestRole]时,用户[ TestUser] 将是数据库的只读角色 db_datareader。您不能执行任何其他操作,例如“针对任何表或 View 插入/更新/删除”。

但是您将 ALTER 权限添加到 [TestUser],用户将同时拥有 SELECTALTER权限,用户将是类似 db_owner 的角色。当然它有创建 View 或删除表的权限。

不可能创建同时拥有只读权限和CREATE VIEW权限的Azure SQL数据库用户。

引用:Database-Level Roles

希望这有帮助。

关于sql-server - 如何创建一个可以创建/更改/删除 View 但不能表、可以读取数据但不能插入/更新/删除/截断数据的 Azure SQL 数据库用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58812402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com