SQL中xp_cmdshell开启和关闭详解

作者:袖梨 2022-06-29

xp_cmdshell

--SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在系统上执行 xp_cmdshell 扩展存储过程。默认情况下,xp_cmdshell 选项在新安装的软件上处于禁用状态,但是可以通过使用外围应用配置器工具或运行 sp_configure 系统存储过程来启用它,如下面的代码示例所示:

 代码如下 复制代码

 -- To allow advanced options to be changed.
--允许高级选项将被改变
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
--更新当前配置的值为高级选项
RECONFIGURE
GO
-- To enable the feature.
--启用这个特性
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
--更新当前配置的值为这个特性。
RECONFIGURE
GO


另一种sp_xp_cmdshell开启与关闭xp_cmdshell实例
 

 代码如下 复制代码
[sql]
USE master 
GO 
IF OBJECT_ID('sp_xp_cmdshell', 'P') IS NOT NULL  
    DROP PROC sp_xp_cmdshell 
GO 
CREATE PROCEDURE sp_xp_cmdshell @OnOff CHAR(3) ='ON' 
AS  
/* 
作者:陈恩辉-弘恩 
示例: 
exec sp_xp_cmdshell @OnOff = 'ON'  --开启 xp_cmdshell功能 
exec sp_xp_cmdshell @OnOff = 'OFF' --关闭 xp_cmdshell功能 
*/ 
    IF UPPER(@OnOff) NOT IN ( 'ON', 'OFF' )  
        BEGIN  
            SELECT  '参数 @OnOff 只能是 ON,OFF ' AS return_result  
            RETURN  
        END  
    IF UPPER(@OnOff) = 'ON'  
        BEGIN 
            -- 允许配置高级选项 
            EXEC master.sys.sp_configure 'show advanced options', 1 
            -- 重新配置 
            RECONFIGURE 
            -- 启用xp_cmdshell 
            EXEC master.sys.sp_configure 'xp_cmdshell', 1 
            --重新配置 
            RECONFIGURE 
        END  
    ELSE  
        BEGIN 
            -- 关闭xp_cmdshell 
            EXEC master.sys.sp_configure 'xp_cmdshell', 0 
            --重新配置 
            RECONFIGURE 
            -- 关闭配置高级选项 
            EXEC master.sys.sp_configure 'show advanced options', 0 
            -- 重新配置 
            RECONFIGURE 
        END  
GO  
EXEC sp_MS_marksystemobject 'sp_xp_cmdshell' 
GO  

相关文章

精彩推荐