sql server 2005 如何删除扩展存储过程xp_cmdshell

johnny2171 2007-10-15 10:14:17
为了安全原因 我想把xp_cmdshell删了 但是提示我 这个扩展存储过程不存在, 或没有权限

我在网上查了查 说是把public角色的excute权限拒绝了 请问在哪儿设置啊 有那位大虾会啊 帮帮我把
...全文
1442 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxmcxm 2010-11-07
  • 打赏
  • 举报
回复
sp_dropextendedproc
删除扩展存储过程。

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CLR 集成。
cxmcxm 2010-11-07
  • 打赏
  • 举报
回复
可以使用外围应用配置器工具以及通过执行 sp_configure 来启用和禁用 xp_cmdshell
zhangyongbluesky 2010-11-07
  • 打赏
  • 举报
回复
楼主的问题不知道现在是否已经解决了,等待你的回复,谢谢!!!!!!!!
joy_jiangyan 2007-12-10
  • 打赏
  • 举报
回复
报告周老大,用你的方法试了删除xp_cmdshell 的操作.
shutdown后sqlserver起不来,启动后又自动停止了.换回原来的mssqlsystemresource.mdf
再启动就没问题了...
TigerEatAngil 2007-10-15
  • 打赏
  • 举报
回复
2005
sp_configure 'xp_cmdshell',0
reconfigure with override
go
zhou__zhou 2007-10-15
  • 打赏
  • 举报
回复
也不一定,说不定有高人自有办法,敬候之.
johnny2171 2007-10-15
  • 打赏
  • 举报
回复
也就是说扩展存储过程在 2005中不能删除???

真晕了~~~~~~
zhou__zhou 2007-10-15
  • 打赏
  • 举报
回复
sorry,没办法了,查询了MSDN
在 SQL Server 2005 中,sp_dropextendedproc 不会删除系统扩展存储过程。但系统管理员应拒绝 public 角色对扩展存储过程的 EXECUTE 权限。在 SQL Server 2000 中,sp_dropextendedproc 可用于删除任何扩展存储过程。

不能在事务内部执行 sp_dropextendedproc。

johnny2171 2007-10-15
  • 打赏
  • 举报
回复
我就是着样写的啊 删不料啊
zhou__zhou 2007-10-15
  • 打赏
  • 举报
回复
试试,
EXEC sp_dropextendedproc 'xp_cmdshell' --删除
EXEC sp_addextendedproc xp_cmdshell,'xplog70.dll' --恢复
zjcxc 元老 2007-10-15
  • 打赏
  • 举报
回复
注意,上面的操作修改的那个文件是很重要的,不要随便改里面的东西,不然 SQL Server 死掉了我可不管
zjcxc 元老 2007-10-15
  • 打赏
  • 举报
回复
如果一定要删除, 按下面的步骤进行即可(注意备份,还原的方法也就是用备份文件代替被修改的文件)


-- 1. 得到 master 库的目录位置(记下这个目录)
SELECT
LEFT(physical_name, LEN(physical_name) - 10)
FROM master.sys.database_files
WHERE type = 0
GO

-- 2. 操作系统中打开上述目录,找到如下两个文件
mssqlsystemresource.mdf
mssqlsystemresource.ldf

将他们复制一份,改名为:
_mssqlsystemresource.mdf
_mssqlsystemresource.ldf
GO

-- 3. 回到 sql server, 执行下面的语句(语句中的目录要改成步骤1中查到的目录)
USE master
GO

-- 将下面的文件目录修改为你自己的
CREATE DATABASE _sys_resource
ON(
FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\_mssqlsystemresource.mdf'
)
LOG ON(
FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\_mssqlsystemresource.ldf'
)
FOR ATTACH
GO

USE _sys_resource
GO

DROP PROC sys.xp_cmdshell
GO

EXEC sp_detach_db N'_sys_resource'
GO

-- 要重启 sql 才生效,下面这句让 sql 停止
SHUTDOWN
GO


-- 4. 回到步骤 2 的目录,将下面两个文件改名以做备份
mssqlsystemresource.mdf
mssqlsystemresource.ldf

-- 5. 将下面两个文件改名,去掉前面的 _
_mssqlsystemresource.mdf
_mssqlsystemresource.ldf


-- 6. 重新启动 sql server, 再执行 xp_cmdshell, 你会发现找不到这个存储过程了
ojuju10 2007-10-15
  • 打赏
  • 举报
回复
禁用就可以了,建议不要删除
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'xp_cmdshell', 0;
GO
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
zjcxc 元老 2007-10-15
  • 打赏
  • 举报
回复
不建议你删除,sql 自己也会用到,建议如楼上那样, 把它关闭就行了,注意设置好权限,不然有权限照样可以再开启

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧