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

Mel*_*hal 4 sql-server

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

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

Gre*_*ray 9

您不能在单个表上分配DROP或CREATE权限,因为这些是模式和数据库级别权限:

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

  • CREATE TABLE需要数据库中的CREATE TABLE权限以及要在其中创建表的模式的 ALTER权限.

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

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

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