efdf 发表于 2014-2-18 10:41:12

SQL中xp_cmdshell开启和关闭详解

今天在做SQL 服务配置功能时我们需要把xp_cmdshell开启,到后面有朋友说就可以关闭结果我就找到了关于xp_cmdshell开启和关闭方法,下面与大家一起分享。
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实例

代码如下       

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

页: [1]
查看完整版本: SQL中xp_cmdshell开启和关闭详解