2012-04-09 25 views
1

什么服务器角色(S)和/或数据库角色(一个或多个)都必须用SQL登录必须做到以下几点:SQL Server - 用于应用程序访问的角色是什么?

  1. 读取数据(包括临时表)
  2. 写入数据(包括临时表)
  3. 他们被授予访问

我们正在从SQL 2000迁移到2008年,我经历的所有登录,并已注意到他们都设置为系统管理员&的db_owner,在数据库中执行任何SP其中ISN很好。我们使用这些登录的应用程序只会执行我上面列出的内容,所以这就是我想知道的原因。我知道我可以使用数据库角色db_datareader & db_datawriter设置每个登录,但不包括执行SP。我们有2个或者我们的数据库接近300个SP,并且必须通过每个SP,并且在扩展属性中设置登录权限将是太长和乏味的。

任何帮助,非常感谢!

回答

0

我要么只是对付它和手动或(我的偏好)权限设置创建有类型的,你想给权限的数据库角色,并指定登录到这些。这样,如果多个登录需要相同的一组权限,则只需给他们相同的角色。作为奖励,如果您的可编程性对象具有某种前缀命名约定,以便(例如)从您的登录信息表中读取的过程全部以pAccount_之类的东西开始,那么您可以动态地执行GRANT s到基于例程前缀的角色。

+0

我走了这条路,因为它给了我目前情况最灵活的方式。谢谢(你的)信息! – Robert 2012-04-10 12:31:08

1

不得不去通过每个SP和扩展属性设置登录权限会太长而乏味

然而,这也将是最安全的。

使用内置角色会将太多数据库暴露给您的应用程序。

+0

是的,最安全的,但您如何管理所有的SP和登录方面的权限?我们在这里没有数据库管理员,这只是我(最近离开的另一个人)... – Robert 2012-04-09 20:12:57

1

你可以给db_datareader和/或db_datawriter执行权限吗?这将使用户有权在其有权访问的数据库中执行任何存储过程。如果您有意见,您还需要授予他们选择权。

GRANT EXECUTE TO db_datawriter 
+0

我想'Alter'不会被需要然后,看到这些应用程序如何不“改变”任何表。 ...是否包括删除临时表? – Robert 2012-04-09 20:49:02

相关问题