本帖最后由 dxh_0829 于 2013-05-09 14:12:49 编辑

解决方案 »

  1.   

    1、禁用sa,开发没必要用到sa。
    2、建立特定的账号或者用Windows身份验证给开发人员,然后服务器级别角色给public即可,数据库级别给datareader、datawriter,如果需要再适当加权限
      

  2.   

    用DDL触发器实现,use master
    gocreate trigger [trad] on all server
    with execute as 'sa'
    for drop_database
    as
    begin
     set nocount on
     
     rollback tran
     
     print 'Don ''t allow to drop database..'
    end
    -- 建测试数据库
    create database dxh-- 测试删除dxh数据库
    drop database dxh/*
    Don 't allow to drop database..
    Msg 3609, Level 16, State 2, Line 1
    The transaction ended in the trigger. The batch has been aborted.
    */-- 确认存在
    select name,create_date
     from sys.databases
     where name='dxh'/*
     name                 create_date
    ------------------- ---------------------------
     dxh               2013-05-09 14:25:15.930(1 row(s) affected)
    */
      

  3.   

    因为谁都有sa权限,删掉这个DDL触发器也就没用了..
    个人建议还是应该规范一下开发环境的权限管理喔.
      

  4.   

    单独控制权限啊,sa应该只是dba用的
      

  5.   

    请问怎么写?[/quote楼上都已经给你例子了