【问题标题】:Creating a SQL Azure user that cannot create tables创建无法创建表的 SQL Azure 用户
【发布时间】:2015-07-15 23:49:29
【问题描述】:

我只需要在 SQL Azure 数据库上创建一个新用户,该用户可以从每个表中选择/插入/更新/删除,并执行每个过程,但不能创建/更改/删除任何内容。

换句话说,我需要一个不能对数据库运行 DDL 命令的新用户。

我已经设法创建了登录名和用户(在主架构上)。 有什么帮助吗?

-- 编辑 1 一旦我在 SQL Azure 上创建了新用户,它就已经可以创建表和过程(因此,它是撤销该功能的基础)。以下是从 Master 数据库发出的命令:

CREATE LOGIN Sistema WITH PASSWORD = 'XXX';

CREATE USER Sistema 
FOR LOGIN Sistema 
WITH DEFAULT_SCHEMA = dbo; --This command was run on Master database, AND on my MainDatabase.

--解决方案(基于 Jisaak 的回答):

--After creating login and user, I issued those commands from MainDatabase:

EXEC sp_addrolemember db_datareader, Sistema
EXEC sp_addrolemember db_datawriter, Sistema
EXEC sp_droprolemember db_owner, Sistema    --As it appears, SQL Azure defaults new users as "db_owners", which must be revoked

【问题讨论】:

    标签: sql azure azure-sql-database


    【解决方案1】:

    只需将“db_datareader”和“db_datawriter”数据库角色成员身份分配给用户。您可以使用 sp_addrolemember stored procedure 在 Azure 上正常工作:

    EXEC sp_addrolemember 'db_datareader',  'USERNAME'
    EXEC sp_addrolemember 'db_datawriter',  'USERNAME'
    

    编辑:

    您可以使用此sql from gplwhite 来检查角色成员身份:

    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
    

    【讨论】:

    • 感谢您的帮助。问题是:一旦创建了新用户,他就已经可以创建表和过程(我想也可以更改/删除)。另一个问题是我在尝试使用 master 数据库中的 sp_addtolemember 分配角色时收到Msg 15151, Level 16, State 1, Line 1 Cannot alter the role 'db_datareader', because it does not exist or you do not have permission.
    • 我编辑了答案和代码示例,请重试。
    • 在尝试更改 Azure SQL 主数据库中的 db_datareader 时,我遇到了与 @MarceloMyara 完全相同的错误。同时我看到它存在,我可以改变像 dbmanager 这样的角色。
    • 对于人们来说,“无法更改角色...”错误。创建登录必须在主数据库上执行。必须在目标数据库上执行创建用户查询和更改角色查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多