要给一个架构的创建和修改存储过程权限,但是不给修改表的权限,该如何做
请给为大侠给小弟指点迷津

解决方案 »

  1.   

    --打开数据库 
    Use databaseName --创建角色 
    create role ProgramerRole --用于创建表 存储过程 视图 
    grant create table,create procedure,create view to ProgramerRole --execute用以执行存储过程,alter用以创建、修改存储过程和视图, 
    --并可以新建立表,但不能修改表,但也可以删除表和对表改名了 
    grant select,insert,execute,alter on schema::dbo to ProgramerRole --用于允许用户查看 显示估计的执行计划(081205) 
    grant showplan to ProgramerRole --创建登录账号 
    --create login username with password='password' 
    --创建数据库用户 
    create user username for login username --将用户TestUser添加到TestRole角色中 
    exec sp_addrolemember 'ProgramerRole','username ' --执行Sql Server Profiler是服务器级权限,所以在master库中授权 
    USE master;grant alter trace to auto; 
      

  2.   

    GRANT 系统对象权限 (Transact-SQL)授予对系统对象(例如,存储过程、扩展存储过程、函数以及视图)的权限。主题链接图标 Transact-SQL 语法约定
     语法GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal  参数[ sys.].    只有在引用目录视图和动态管理视图时才需要 sys 限定符。system_object    指定要对其授予权限的对象。principal    指定要向其授予权限的主体。 注释可使用该语句授予对 SQL Server 安装的特定存储过程、扩展存储过程、表值函数、标量函数、视图、目录视图、兼容性视图、INFORMATION_SCHEMA 视图、动态管理视图以及系统表的权限。上述每个系统对象都作为服务器的资源数据库 (mssqlsystemresource) 中的唯一记录而存在。该资源数据库为只读。指向对象的链接作为各数据库的 sys 架构中的一条记录显示。可以授予、拒绝和撤消执行或选择系统对象的权限。授予执行或选择对象的权限不一定会提供使用该对象所需的所有权限。多数对象执行的操作都需要其他权限。例如,被授予对 sp_addlinkedserver 的 EXECUTE 权限的用户无法创建链接服务器,除非该用户也是 sysadmin 固定服务器角色的成员。默认名称解析将解析资源数据库的非限定过程名称。因此,仅当指定目录视图和动态管理视图时,才需要 sys 限定符。不支持授予对触发器以及对系统对象列的权限。在 SQL Server 升级期间,对系统对象的权限将予以保留。在 sys.system_objects 目录视图中可以查看系统对象。在 master 数据库中的 sys.database_permissions 目录视图中可以查看对系统对象的权限。下面的查询将返回系统对象的权限的有关信息: