表删除和创建的t-SQL授予权限

时间:2010-03-17 19:38:11

标签: sql-server

如何授予某些用户仅在我们的VB.net 2005 Win应用程序访问的SQL 2005数据库中删除和创建单个表的权限?

有些文章建议授予对表的控制权限,但我无法使其工作。如果你认为这是可行的方法,你能告诉我正确的语法吗?

2 个答案:

答案 0 :(得分:9)

您无法在单个表上分配DROP或CREATE权限,因为这些是架构和数据库级权限:

  • DROP TABLE要求表所属架构的ALTER权限,表的CONTROL权限或db_ddladmin固定数据库角色的成员身份。

  • CREATE TABLE需要database中的CREATE TABLE权限以及正在创建该表的schema的ALTER权限。

如果用户对表具有控制权限,则他们可以删除它,但您将无法再次创建它。根据您的要求,您可以采取两种方法:

  1. 如果您只需要更改表的结构,则应使用TRUNCATE TABLE语句删除所有记录(不记录日志),然后使用ALTER TABLE语句添加/删除列。

  2. 如果您确实希望用户能够再次删除然后再创建表,则需要在不同的模式中创建表,并为该用户分配正确的权限。请参阅有关using schemas in MS SQL的文章,以帮助您入门。将表放在单独的模式中后,可以将新模式的db_ddladmin角色授予用户,并且他们应该只能创建和删除该模式中的表。

答案 1 :(得分:1)

使用此:

DENY ALTER ON SCHEMA::dbo 

但这并不妨碍用户将此权利授予自己。