具体来说:服务器中的public角色,和数据库中的public角色 设置权限的时候,要分开设置吗?希望大大们谈谈吧!谢谢!

解决方案 »

  1.   


    固定服务器角色 
    描述 sysadmin 
    可以在 SQL Server 中执行任何活动。 serveradmin 
    可以设置服务器范围的配置选项,关闭服务器。 setupadmin 
    可以管理链接服务器和启动过程。 securityadmin 
    可以管理登录和 CREATE DATABASE 权限,还可以读取错误日志和更改密码。 processadmin 
    可以管理在 SQL Server 中运行的进程。 dbcreator 
    可以创建、更改和除去数据库。 diskadmin 
    可以管理磁盘文件。 bulkadmin 
    可以执行 BULK INSERT 语句。 
    可以从 sp_helpsrvrole 获得固定服务器角色的列表,可以从 sp_srvrolepermission 获得每个角色的特定权限。 每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。例如,如果 Database1 和 Database2 中都有叫 UserX 的用户 ID,将 Database1 中的 UserX 添加到 Database1 的 db_owner 固定数据库角色中,对 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成员没有任何影响。 固定数据库角色 
    描述 db_owner 
    在数据库中有全部权限。 db_accessadmin 
    可以添加或删除用户 ID。 db_securityadmin 
    可以管理全部权限、对象所有权、角色和角色成员资格。 db_ddladmin 
    可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。 db_backupoperator 
    可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。 db_datareader 
    可以选择数据库内任何用户表中的所有数据。 db_datawriter 
    可以更改数据库内任何用户表中的所有数据。 db_denydatareader 
    不能选择数据库内任何用户表中的任何数据。 db_denydatawriter 
    不能更改数据库内任何用户表中的任何数据。 
    可以从 sp_helpdbfixedrole 获得固定数据库角色的列表,可以从 sp_dbfixedrolepermission 获得每个角色的特定权限。 数据库中的每个用户都属于 public 数据库角色。如果想让数据库中的每个用户都能有某个特定的权限,则将该权限指派给 public 角色。如果没有给用户专门授予对某个对象的权限,他们就使用指派给 public 角色的权限
      

  2.   

    sql 服务器角色 数据库角色
    服务器角色
    所有的服务器角色都是“固定的”角色,并且,从一开始就存在于那里——自安装完SQL Server的那一刻起,你将拥有的所有服务器角色就已经存在了。角  色
    sysadmin
     该角色能够执行SQL Server上的任何操作。本质上,任何具有这种角色成员身份的人都是那个服务器上的sa。这种服务器角色的创建为微软提供了某一天去除sa登录的能力——实际上,联机丛书把sa称作本质上为遗留物的东西值得注意的是,在SQL Server上,Windows的Administrators组被自动映射到sysadmin角色中。这意味着服务器的Administrators组中的任何成员同时也具有对SQL数据的sa级别的访问权限。如果需要,你可以从sysadmin角色中删除Windows的administrators组,以提高安全性、防范漏洞
     
    serveradmin
     该角色能设置服务器范围的配置选项或关闭服务器。尽管它在范围上相当有限,但是,由该角色的成员所控制的功能对于服务器的性能会产生非常重大的影响
     
    setupadmin
     该角色仅限于管理链接服务器和启动过程
     
    securityadmin
     对于专门创建出来用于管理登录名、读取错误日志和创建数据库许可权限的登录名来说,该角色非常便利。在很多方面,该角色是典型的系统操作员角色——它能够处理多数的日常事务,但是,却不具备一个真正无所不能的超级用户所拥有的那种全局访问
     
    processadmin
     能够管理SQL Server中运行的进程——必要的话,该角色能够终止长时间运行的进程
     
    dbcreator
     该角色仅限于创建和更改数据库
     
    diskadmin
     管理磁盘文件(指派给了什么文件组、附加和分离数据库,等等)
     
    bulkadmin
     该角色有些怪异。它被明确创建出来,用于执行BULK INSERT语句的权限,否则的话,只能由具有sysadmin权限的人来执行BULK INSERT语句。坦白地说,我不明白为什么该语句不能像其他事情那样通过GRANT命令来授予权限,但它的确没有。要记住,即使把一个用户加入到了bulkadmin组中,也只是给了他们访问那个语句的权限,对于运行该语句的表,并没有授予用户访问那个表的权限。这意味着不仅需要把用户添加到bulkadmin中,而且,对于想要用户能在其上执行BULK INSERT的表,还要授予(GRANT)用户INSERT许可权限。此外,对于将在BULK INSERT语句中引用的所有表,还要确保用户拥有正确的到那些表的SELECT访问权限
     
    对于在服务器上承担管理角色任务的单个用户,你可以对其混合搭配这些角色。一般来说,我怀疑只有最大型的数据库才会使用比sysadmin和securityadmin更多的角色,然而,有它们在旁边还是很便利的。在本章的前面,我曾就全能用户会带来的麻烦进行过抨击。当新的sysadmin角色添加到7.0版时,我完全是欣喜若狂的,或许,得知此事你不会感到惊奇。sysadmin角色的存在表明,在不断发展的基础上,不再需要让所有人都有sa登录账户——只要让需要拥有那种访问级别的用户成为sysadmin角色的成员,这样他们就不再需要以sa登录。数据库角色
    数据库角色限制在单个数据库的范围之内——用户属于一个数据库中的db_datareader角色并不意味着他属于另一个数据库中的那个角色。数据库角色分为两个子类:固定数据库角色和用户定义数据库角色。1.固定数据库角色就如同存在若干个固定服务器角色一样,这里也有许多的固定数据库角色。他们中的一些有预先定义好的专门的用途,这是不能使用常规的语句复制出来的(即是说,你无法创建拥有同样功能的用户定义数据库角色)。然而,大多数角色的存在是为了处理更一般的情形,并让你做起事情来更加容易。角  色
     特  性
     
    db_owner
     该角色表现得就好像它是所有其他数据库角色中的成员一样。使用这一角色能够造就这样的情形:多个用户可以完成相同的功能和任务,就好像他们是数据库的所有者一样
     
    db_accessadmin
     实现类似于securityadmin服务器角色所实现功能的一部分,只不过这一角色仅局限于指派它并创建用户的单个数据库中(不是单个的权限)。它不能创建新的SQL Server登录账户,但是,该角色中的成员能够把Windows用户和组以及现有的SQL Server登录账户加入到数据库中
     
    db_datareader
     能够在数据库中所有的用户表上执行SELECT语句
     
    db_datawriter
     能够在数据库中所有的用户表上执行INSERT、UPDATE和DELETE语句
     
    db_ddladmin
     能够在数据库中添加、修改或删除对象
     
    db_securityadmin
     securityadmin服务器角色的数据库级别的等价物。这一数据库角色不能在数据库中创建新的用户,但是,能够管理角色和数据库角色的成员,并能在数据库中管理语句和对象的许可权限
     
    db_backupoperator
     备份数据库(打赌你不会想到那样一个角色!)
     
    db_denydatareader
     提供一种等同于在数据库中所有表和视图上DENY SELECT的效果
     
    db_denydatawriter
     类似于db_denydatareader,只不过这里影响的是INSERT、UPDATE和DELETE语句
     
    与使用固定服务器角色很类似,除非是在最大型的数据库中,否则,你可能不会使用到所有这些角色。在这些固定数据库角色中,一些是无法用你自己的数据库角色来替换的,而另一些,只不过在处理那些似乎经常出现的简单粗糙的情形时非常便利而已。