仅在数据库上授予CREATE TABLE权限,而不是ALTER权限。

3

我只是想尝试玩一下权限,我想授予用户CREATE表的权限,但不包括ALTERDROP。此外,用户应该只能创建表格(没有存储过程,没有函数)。

grant alter on schema::dbo to demo_db_user
grant create table to demo_db_user

通过使用上述命令,用户可以修改表格。

您希望用户能够更改他们已经创建的表格吗?还是只能更改他们自己创建的表格? - Duniyadnd
我希望这个用户能够创建表,但无论是自己创建的还是其他用户创建的表都不应该进行任何修改。 - Shantanu Gupta
如果用户创建表格时出现错误,需要进行更改怎么办?您允许他们删除它吗? - Michael McGriff
@MichaelMcGriff:我知道有各种各样的问题。但是我只是在我的本地工作站上玩耍,以学习这些东西。所以我没有找到一种只创建表而不让用户更改它的方法。 - Shantanu Gupta
1个回答

0
你可以编写一个DDL触发器,如果当前用户不是特定角色的成员(或其他条件),就阻止ALTER TABLE。类似于以下示例(未经测试):
CREATE TRIGGER [ddl_tr_prvent_alter_table] ON DATABASE
FOR alter_procedure
as
begin
  if User_Name() <> 'dbo'
    RAISERROR ('go ahead, you must not change a table', 16, 1);
end

我认为你还需要一个回滚操作。 - Ben Thul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接