基于安全考虑,MSSQL2005及以上版本默认禁用了xp_cmdshell。直接调用该扩展存储过程会提示:
SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
幸运的是:只要该扩展存储过程没被删除,我们就可以一句话启用它(不支持多句执行的话,请单独执行每句):
www.2cto.com EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
>
好了,来试试!
exec master..xp_cmdshell "whoami"
PS: 将开启语句的第二个1改成0再执行,xp_cmdshell就又处于禁用状态了