xp_cmdshell是一个危险的存储过程,可以通过它访问系统资源,但有时候我们也需要使用它来实现一些特殊的处理。
从安全的角度来考虑,禁用xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用xp_cmdshell,而普通用户只能使用这些用户存储过程。
Sql Server 默认情况下xp_cmdshell 存储过程是被禁用了的,但是可通过具有master 权限的sql 连接账号进行相关的配置,即可打开xp_cmdshell 存储过程。
下面我们就来看看这是怎么打开xp_cmdshell 的吧。
1.使用具有master权限的账户连接SQL server数据库
2.点击连接名称>右键选择方面
3.点击方面条,选择外围应用服配置
4.将xpcmdshellEnabled 设置为true
5.点击右下脚,将当前的状态导出为测略,点击确定,然后在点击确定。
6.选择数据库,管理》策略管理》看到刚刚导出的策略名称双击打开,进行如图设置
7.输入以下SQL进行启动xp_cmdshell
EXEC sp_configure 'show advanced options', 1
GO
-- 更新高级选项的当前配置值。
RECONFIGURE
GO
-- 以启用该功能。
EXEC sp_configure 'xp_cmdshell', 1
GO
-- 更新此功能的当前配置值。
RECONFIGURE
GO
-- 不允许更改高级选项。
EXEC sp_configure 'show advanced options', 0
GO
-- 更新高级选项的当前配置值。
RECONFIGURE
GO
8.现在就可以使用xp_cmdshell 了如: exec xp_cmdshell ‘div c:/’ --查看C盘目录