假设必须修改数据库中的一个存储过程,同时有几个用户被授予执行这个存储过程的权限,请问执行哪个语句可以实现修改,但又不影响现有的权限。

解决方案 »

  1.   

    SQL 用户权限设置 
    首先,做好用户安全: 
     
    --简单的,只允许sql的用户访问sql(防止利用administrator组用户访问) 
     
    1.企业管理器--右键SQL实例--属性--安全性--身份验证--选择"sql  server和windows"--确定 
     
    2.企业管理器--安全性--登陆--右键sa--设置密码--其他用户也设置密码 
     
    3.删除用户: 
               BUILTIN\Administrators 
               <机器名>\Administrator  --这个用户不一定有 
       这样可以防止用windows身份登陆SQL 
     
    4.设置进入企业管理器需要输入密码 
    在企业管理器中 
               --右键你的服务器实例(就是那个有绿色图标的) 
               --编辑SQL  Server注册属性 
               --选择"使用  SQL  Server  身份验证" 
               --并勾选"总是提示输入登录名和密码" 
               --确定 
     
    --经过上面的设置,你的SQL  Server基本上算是安全了. 
    ------------------------------------------------------------------------ 
     
    其次,改默认端口,隐藏服务器,减少被攻击的可能性 
     
    SQL  Server服务器 
               --开始 
               --程序 
               --Microsoft  SQL  Server 
               --服务器网络实用工具 
               --启用的协议中"TCP/IP" 
               --属性 
               --默认端口,输入一个自已定义的端口,比如2433 
               --勾选隐藏服务器 
     
    ---------------------------------------------------------------------------- 
    --管好sql的用户,防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限) 
     
    --切换到你新增的用户要控制的数据库 
    use  你的库名 
    go 
     
    --新增用户 
    exec  sp_addlogin  'test'            --添加登录 
    exec  sp_grantdbaccess  N'test'            --使其成为当前数据库的合法用户 
    exec  sp_addrolemember  N'db_owner',  N'test'            --授予对自己数据库的所有权限 
     
    --这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表 
    go 
     
    --删除测试用户 
    exec  sp_revokedbaccess  N'test'            --移除对数据库的访问权限 
    exec  sp_droplogin  N'test'            --删除登录 
     
    --------------------------------------------------------------------------- 
    最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: 
    --添加 
    --添加用户: 
    exec  sp_addlogin  '用户名','密码','默认数据库名' 
     
    --添加到数据库 
    exec  sp_grantdbaccess  '用户名','数据库名' 
     
    --分本权限 
    grant  insert,select,update,delete  on  table1  to  public   
     
     
    ------------------------------------------------------------------- 
    至于具体的安全设置和理论知道,参考SQL联机帮助
      

  2.   

    修改存储过程不影响权限,alter procedure