用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) */
2、建立特定的账号或者用Windows身份验证给开发人员,然后服务器级别角色给public即可,数据库级别给datareader、datawriter,如果需要再适当加权限
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)
*/
个人建议还是应该规范一下开发环境的权限管理喔.