2010-03-17 108 views
4

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

一些文章建议授予表的控制权,但我无法做到这一点。如果你认为这是一条路,你能告诉我正确的语法吗?

回答

9

你不能指定DROP或单个表CREATE权限,这些都是架构和数据库级别的权限:

  • DROP TABLE需要到该表所属,控制权限对表的模式ALTER权限,或者db_ddladmin固定数据库角色的成员资格。

  • CREATE TABLE需要database的CREATE TABLE权限和schema其中正在创建该表的权限。

如果用户对表的控制权限他们可以放弃它,但你将无法再创建它。还有,你可能需要根据您的需求两种方法:

  1. 如果你只需要改变表的结构,你应该使用TRUNCATE TABLE语句删除所有记录(不记录),然后使用ALTER TABLE声明添加/删除列。

  2. 如果您确实希望用户能够删除并重新创建表,则需要在不同的架构中创建表,并为该架构分配用户正确的权限。看到这篇文章约using schemas in MS SQL让你开始。一旦将该表格置于单独的模式中,您就可以将新模式的db_ddladmin角色授予用户,并且他们应该只能创建和删除该模式中的表格。

1

使用此:

DENY ALTER ON SCHEMA::dbo 

但这并不妨碍给予回到自己的这一权利的用户。

+1

可能希望用'TO userName'来完成 – 2013-10-10 16:17:55