SQL SERVER-开启xp_cmdshell

时间:2022-09-04 02:16:08
在sql server中执行cmd命令,报以下异常。

EXEC master.sys.xp_cmdshell 'dir c:/'

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1 [Batch Start Line 44]
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

服务器开启

--Server config

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell',1;
GO
RECONFIGURE;
GO

如果是sysadmin账号则可以执行了,若不是则要做以下配置。

添加代理账号,注意一定用windows账号登陆SSMS,在执行

EXEC sp_xp_cmdshell_proxy_account 'adc\ccc','xx'

否则会报以下异常,其余异常如权限不够,则用管理员启动SSMS或则账号密码错误,还有一定要加域名如果本地则EXEC sp_xp_cmdshell_proxy_account 'sdsdbt16b\Jinwei','QSMC+12345',一定写成本地主机名才行

An error occurred during the execution of sp_xp_cmdshell_proxy_account.
Possible reasons: the provided account was invalid or the '##xp_cmdshell_proxy_account##' credential could not be created.
Error code: 0(null), Error Status: 0.

在master下建立相应用户并赋予执行xp-cmdshell权限

GRANT EXECUTE ON sys.xp_cmdshell

    TO Cmd_Login;

否则报异常

The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.