SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问。因为此组件已作为此服务嚣安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure启用‘xp_cmdshell’。有关启用‘xp_cmdshell’的详细信息,请参阅sQL帮助文件。
【原因分析】:
xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程。一般情况下,xp_cmdshell对管理员来说也是不必要的,xp_cmdshell的消除不会对Server造成任何影响。
【解决办法】:
1、通过SQL语句开启。[推荐此方法,因为在任何版本的SQL SERVER中都可以使用。]
通过查询分析器,选择Master数据库,然后执行以下SQL内容:
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
执行结果:
配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 'xp_cmdshell' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
如需关闭只需将“sp_configure 'xp_cmdshell',1”改为“sp_configure 'xp_cmdshell',0”即可。
--1.路径是数据库服务器路径-- E:\temp\abc.xls;2.文件夹需设置everyone权限
--3.数据库启用Named Pipes
-- -U用户名 -P密码
--导出所有数据
exec master..xp_cmdshell 'bcp "数据库.dbo.表名" out "E:\temp\abc.xls" -c -S"172.16.7.7" -U"sa" -P"sa"'
--导出查询所需条件数据
exec master..xp_cmdshell 'bcp "SELECT * FROM 数据库.dbo.表名" queryout "E:\temp\abc.xls" -c -S"172.16.7.7" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'BCP MES_ARCH.dbo.BrushCard_Material_201806 out d:\temp\BrushCard_Material_201806.xls -c -t -U"sa" -P"redcollar"'
EXEC master..xp_cmdshell 'BCP "SELECT * FROM qianyumes.dbo.ArtInfo" queryout D:\temp\ArtInfo.xls -c -t -T'