如何授予某些用户仅在我们的VB.net 2005 Win应用程序访问的SQL 2005数据库中删除和创建单个表的权限?
有些文章建议授予对表的控制权限,但我无法使其工作。如果你认为这是可行的方法,你能告诉我正确的语法吗?
答案 0 :(得分:9)
您无法在单个表上分配DROP或CREATE权限,因为这些是架构和数据库级权限:
DROP TABLE要求表所属架构的ALTER权限,表的CONTROL权限或db_ddladmin固定数据库角色的成员身份。
CREATE TABLE需要database中的CREATE TABLE权限以及正在创建该表的schema的ALTER权限。
如果用户对表具有控制权限,则他们可以删除它,但您将无法再次创建它。根据您的要求,您可以采取两种方法:
如果您只需要更改表的结构,则应使用TRUNCATE TABLE语句删除所有记录(不记录日志),然后使用ALTER TABLE语句添加/删除列。
如果您确实希望用户能够再次删除然后再创建表,则需要在不同的模式中创建表,并为该用户分配正确的权限。请参阅有关using schemas in MS SQL的文章,以帮助您入门。将表放在单独的模式中后,可以将新模式的db_ddladmin角色授予用户,并且他们应该只能创建和删除该模式中的表。
答案 1 :(得分:1)
使用此:
DENY ALTER ON SCHEMA::dbo
但这并不妨碍用户将此权利授予自己。