1. 问题:

​ SQL Server 阻止了对组件 ‘xp_cmdshell’ 的 过程 ‘sys.xp_cmdshell’ 的访问,因为此组件已作为此服务器安全
配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘xp_cmdshell’。
有关启用 ‘xp_cmdshell’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”。

2. 原因

1、错误是因为使用bcp命令的时候,没有权限。SQL Server的用户没有SP_configure的使用权限,
需要将对应用户添加”sysadmin”角色。

2、xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式
返回任何输出,是一个功能非常强大的扩展存贮过程。
一般情况下,xp_cmdshell对管理员来说也是不必要的,xp_cmdshell的消除不会对Server造成任何影响

3. 解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--开启
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
--关闭
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
--如扔存在问题
dbcc addextendedproc("xp_cmdshell","xplog70.dll");
--或者
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'; 来恢复cmdshell。

参考文章:

SQL Server 阻止了对组件 ‘xp_cmdshell’ 的 过程 ‘sys.xp_cmdshell’ 的访问 - Team_Leading - 博客园