sql server 2005 (2008)能成功删除系统存储过程以实现安全配置吗?

看到有很多数据库安全配置的文章,在数据库安全配置方面提到了很重要的一条就是如何删除危险的系统存储过程,并且给出了很详细的实施脚本,让我们这些新手参照实施,但实际情况却不是这样的。比如我执行下面的语句:
exec master..sp_dropextendedproc xp_cmdshell
会出现以下错误:
 
执行
exec master..sp_dropextendedproc xp_cmdshell
时候报错:无法对 过程 'xp_cmdshell' 执行 删除,因为它不存在,或者您没有所需的权限。
 
实际上权限是肯定有的,因为是以系统管理员的身份登录执行的,并且通过查询系统数据库过程 “xp_cmdshell”也是存在的,那唯一的理由就是过程sp_dropextendedproc  是执行不了删除存储过程的操作的。
 
这个可以从我后面在联机文档找到的资料加以证实,资料如下
Code Snippet
在 SQL Server 2008 和 SQL Server 2005 中, sp_dropextendedproc 不会删除系统扩展存储过程。但系统管理员应拒绝 public 角色对扩展存储过程的 EXECUTE 权限。在 SQL Server 2000 中, sp_dropextendedproc 可用于删除任何扩展存储过程。
 
并且sql server自身也会用到这些扩展存储过程(例如, 修改实例的身份验证模式就要用扩展存储过程读写注册表, 用向导备份的时候, 会用扩展存储过程读取服务器的目录和文件信息), 所以删除是有危险性的(即使你是用 sql 2000), 会导致 sql server 的一些功能不工作
 
其实如果您想禁用XP_cmdshll的话,可以在外围应用配置器中将它禁用即可,至少权限方面严格控制登录用户的权限即可,最保险的就是将WEB服务器跟数据库服务器分离。

你可能感兴趣的:(sql,server,系统,存储,过程,2005)