创建无法创建表的 SQL Azure 用户
Creating a SQL Azure user that cannot create tables
我只需要在 SQL Azure 数据库上创建一个新用户,它可以 SELECT/INSERT/UPDATE/DELETE 来自每个 table,并执行每个过程,但不能 CREATE/ALTER/DROP任何东西。
换句话说,我需要一个不能对数据库执行 运行 DDL 命令的新用户。
我已经设法创建了登录名和用户(在主模式上)。
有帮助吗?
-- 编辑 1
一旦我在 SQL Azure 上创建了新用户,它就已经可以创建 tables 和过程(因此,REVOKE 该权力是基础)。这是从 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
只需将“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
我只需要在 SQL Azure 数据库上创建一个新用户,它可以 SELECT/INSERT/UPDATE/DELETE 来自每个 table,并执行每个过程,但不能 CREATE/ALTER/DROP任何东西。
换句话说,我需要一个不能对数据库执行 运行 DDL 命令的新用户。
我已经设法创建了登录名和用户(在主模式上)。 有帮助吗?
-- 编辑 1 一旦我在 SQL Azure 上创建了新用户,它就已经可以创建 tables 和过程(因此,REVOKE 该权力是基础)。这是从 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
只需将“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