在SQL Server中将用户设置为我的数据库

时间:2010-08-11 17:21:05

标签: sql-server security permissions

我刚刚在SQL Server中为我的数据库创建了一个新用户。我有4个表,我想授予插入,更新,选择和删除权限。我是在新用户的Securables区域手动完成的。

有没有更好的方法来实现这一点,必须触摸每个对象?如果是这样,怎么样?

谢谢,

杆。

2 个答案:

答案 0 :(得分:4)

一种方法是使用模式

  • 表属于架构(我们称之为数据,CREATE SCHEMA
  • 用户属于某个角色(CREATE ROLEsp_addrolemember
  • 权限分配给架构上的角色(GRANT INSERT ON schema::data to myRole

现在,您可以添加新表或更改用户而不会丢失/创建权限

答案 1 :(得分:2)

如果你想要精确控制谁可以做什么,我认为你可以做很多事情 - 你做得很好。

gbn的方法非常漂亮 - “简单”设置的另一种方法(当你不需要很多不同的权限时)是:

  • 为每个用户(或角色)授予数据库角色db_datareader - 这允许读访问权限 (SELECT)所有表格和视图

  • 为每个用户(或角色)授予数据库角色db_datawriter - 这允许对所有表和视图进行写访问(INSERT,UPDATE,DELETE)

如果您还需要授予存储过程的执行权限,那么很遗憾没有预定义的角色可供使用。但是,您可以创建自己的数据库角色,然后为该角色授予执行权限。最棒的是:执行存储过程的权限也适用于您可能在数据库中创建的所有未来存储过程!

要定义新角色,请使用:

CREATE ROLE db_executor
GRANT EXECUTE TO [db_executor]

然后您可以将db_executor分配给那些需要能够在您的数据库中执行存储过程和存储函数的用户。