2015-04-30 51 views
2

只是试图玩弄权限,我想授予CREATE表权限给用户,但不是ALTERDROP。此外用户应该能够创建表只(没有存储的过程,无功能)Grant CREATE TABLE权限只在数据库上但不是ALTER

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

通过使用上述命令,用户能够改变表为好。

+0

你希望用户能够改变他们已经创建的表格吗?或者他们只能改变他们创建的那些? – Duniyadnd

+0

我希望这个用户能够创建表,但不应该改变任何表,而不管用户创建包括他自己。 –

+0

如果用户错误地创建了表格并且需要更改,该怎么办?你允许他们放弃吗? –

回答

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 
+0

我想,你也需要在那里回滚。 –

相关问题